Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Ošetření vstupu-jen čísla

Aktivity
Avatar
ondra.482
Člen
Avatar
ondra.482:13.4.2013 16:21
// 11.4.2013
// Výpočet kořenů pro kvadratickou rovnici
#include<iostream>
#include<cmath> // matematická knihovna


using namespace std;
void main()
{
        float a,b,c;
        float x1,x2,D;




        cout <<"Vypocet korenu kvadraticke rovnice ze vzorce ax + bx + c = 0\n";

        cout << "\n\Zadejte a ";
        cin >> a;








        while (a==0)
        {
                cout << " Neplatny udaj a zvol cislo znovu";
                cout << " \nZadej a ";
                cin >> a;
        }
        cout<<"\Zadejte b ";
        cin>> b;
        cout<<"\Zadejte c ";
        cin>> c;




        D=(b*b)-(4*a*c);
        cout <<"Diskriminant je " << D  << "\n";
                if (D==0)
                {
                        x1=(-(b))*(2*a);
                        cout << "Rovnice ma spolecne koreny";
                        cout << "\ x1,x2= " << x1 << "\n";
                }

                if (D>0)
                {
                        x1=((-b)+sqrt(D))/(2*a);

                        cout << "Rovnice ma 2 koreny\n";
                        cout << "x1= " << x1 << "\n";
                        x2=((-b)-sqrt(D))/(2*a);
                        cout << "x2= " << x2 << "\n";
                }
                if (D<0)
                {

                        x1=-(b/(2*a));

                        x2= sqrt(-D)/(2*a);



                        cout << "Rovnice nema zadny realny koren\n";
                        cout << "Rovnice ma dva imaginarni koreny\n";
                        cout << "x1= " << x1  << "+" << x2 <<"i";
                        //x2=((-b)-sqrt(D))/(2*a);
                        cout << "\nx2= " << x1  <<"-"<< x2 << "i\n";


                }

        system("pause");
}

Ahoj, za boha nevím jakou podmínku dát pro to,aby mi při napsání písmena,vrátilo zpět z opakováním na vložení čísla

 
Odpovědět
13.4.2013 16:21
Avatar
Зайчик
Člen
Avatar
Odpovídá na ondra.482
Зайчик:13.4.2013 16:41
if(scanf("%d", &a) == 1) // uzivatel zadal cislo
else return 0; // nezadal

v c++ s cout to bude podobně :)

-> stackoverflow.com

Maybe not a proper way... I use that in my school homework.

#include <iostream>
#include <stdio.h>
#include <conio.h>

int getInputNumber()
{
    int key;
    do
    {
        key = _getch();
    }while (key < '0' || key > '9');
    std::cout << key - '0';
    return key - '0';
}

int main()
{
    int n = getInputNumber() ;
    system("pause");
    return 0;
}
Editováno 13.4.2013 16:43
Nahoru Odpovědět
13.4.2013 16:41
Коммунизм для нашего будущего!
Avatar
idc
Člen
Avatar
idc:13.4.2013 17:17
while (!(cin >> a))
{
                while(cin.get() != '\n')
                        cin.clear();
                cout << "Opakuj" << endl;
                continue;
}
cout<<"\Zadejte b ";
cin>> b;
cout<<"\Zadejte c ";
cin>> c;
 
Nahoru Odpovědět
13.4.2013 17:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.