Forum programistyczne

Języki programowania => C/C++ => Wątek zaczęty przez: MikePL Maj 03, 2014, 22:16:36



Tytuł: [C++]Problem z instrukcją warunkową if ... else
Wiadomość wysłana przez: MikePL Maj 03, 2014, 22:16:36
Witam jak każdy młody lub początkujący programista popełniam błędy, kiedy zabierałem się do pisania mojego drugiego kalkulatora natknąłem się na pewien problem.
Otóż gdy podaje pierwsza liczbe i wpisze nieprawidłowe dane wyświetla mi się napis
"Podaj liczbę ćwoku" (tak ma być) ale gdy przy podaniu drugiej liczby (kiedy w pierwszej dałem prawidłowe dane np.12) wyświetla mi się napis "wynik to 12" a chcę żeby wyświetlał się napis "Podaj liczbę ćwoku" wiecie co zrobić?Podam kod i z góry dziękuje za pomoc.
Kod:
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int b;
int a;
cout << "podaj liczbe pierwsza" << endl;
cin >> a;
system ("cls");
cout << "podaj liczbe druga" << endl;
cin >> b;
system ("cls");
if (a != 0 )
    cout << "wynik to: " << a+b << endl;
else
        cout << "podaj liczbe cwoku" << endl;

        cout << "Koniec" << endl;
}


Tytuł: Odp: [C++]Problem z instrukcją warunkową if ... else
Wiadomość wysłana przez: tkosau Maj 06, 2014, 20:34:50
Witaj,

po 1. spodziewasz się liczb całkowitych, więc musisz sprawdzić  czy otrzymałeś poprawne dane - zerknij na metodę cin.good()

po 2. w warunku musisz sprawdzić obie zmienne, sprawdzasz tylko zmienną a

Przykładowe modyfikacje Twojego kodu, aby pokazać o co chodzi:

Kod:
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int b;
int a;
bool test1,test2;

cout << "podaj liczbe pierwsza" << endl;
cin >> a;
test1=cin.good();//zapisanie testu czy wszystko ok ze strumieniem

if(test1)//jesli strumien byl nie odpowiedni nie ma sensu pobierać 2 liczby
{
    system ("cls");
    cout << "podaj liczbe druga" << endl;
    cin >> b;
    test2=cin.good();//zapisanie testu czy wszystko ok ze strumieniem
}
system ("cls");

if (test1&&test2) //sprawdzenie testów
    cout << "wynik to: " << a+b << endl;
else
        cout << "podaj liczbe cwoku" << endl;

cout << "Koniec" << endl;
system("pause");
}