Forum programistyczne
Listopad 15, 2018, 12:21:54 *
Witamy, Gość. Zaloguj się lub zarejestruj.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Forum programistyczne wystartowało. Potrzebujesz pomocy przy pisaniu programu, masz problem programistyczny?

Zapraszamy do rejestracji!!!
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  

Strony: [1]
  Drukuj  
Autor Wątek: [C++]Problem z instrukcją warunkową if ... else  (Przeczytany 4436 razy)
MikePL
Nowy użytkownik
*
Wiadomości: 1


Zobacz profil Email
« : 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;
}
Zapisane
tkosau
Administrator
Nowy użytkownik
*****
Wiadomości: 45


Zobacz profil Email
« Odpowiedz #1 : 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");
}



Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  



http://www.pisaniezagrosze.pl/ druk na płótnie Textileprint Apteki
Działa na MySQL Działa na PHP Powered by SMF 1.1.20 | SMF © 2006-2007, Simple Machines Prawidłowy XHTML 1.0! Prawidłowy CSS!