Problem z zadaniem "Poziom 2- Pętla do ... while".
Ostatnio zmodyfikowano 2013-04-16 21:44
Szustarol Temat założony przez niniejszego użytkownika |
Problem z zadaniem "Poziom 2- Pętla do ... while". » 2013-04-16 17:42:38 Witam. Mam problem z drugim zadaniem domowym Pętla do ... whileOtóż piszę taki program: #include <iostream> using namespace std; int main() { unsigned int a; cout << "Podaj liczbe: " << endl; cin >> a; cin.good(); cin.fail(); if( a = true ) { do { cout << "Podana liczba jest prawidlowa." << endl; cout << "Podana liczba to: " << endl; cout << a << endl; a--; } while( a > 0 ); } if( a = false ) { do { cout << "Podana liczba NIE jest prawidlowa." << endl << "Podaj liczbe ponownie: " << endl; cin >> a; } while( a > 0 ); cout << "Podana liczba to: " << endl; cout << a << endl; } }
I wynikiem zawsze jest liczba poprawna i zawsze jest ona równa 1. Co mam tutaj źle? |
|
pekfos |
» 2013-04-16 17:44:50 Przypisanie w linii 10 i 21. |
|
Szustarol Temat założony przez niniejszego użytkownika |
» 2013-04-16 17:45:53 A konkretnie? a= true jest niepoprawne? |
|
pekfos |
» 2013-04-16 17:47:46 Przypisanie w linii 10 i 21. |
if( a = true )
if( a = false )
a= true jest niepoprawne? |
Oczywiście, że jest niepoprawne. |
|
Szustarol Temat założony przez niniejszego użytkownika |
» 2013-04-16 18:09:14 Ok, trochę to zmodyfikowałem. Teraz pierwsza instrukcja działa poprawnie. Tylko mam jeszcze problem z drugą. #include <iostream> using namespace std; int main() { int a; cout << "Podaj liczbe: " << endl; cin >> a; cin.good(); cin.fail(); if( a > 0 ) { cout << "Podana liczba jest prawidlowa. " << "Podana liczba to: " << endl; cout << a; } if( a <= 0 ) { do { cout << "Podana liczba NIE jest prawidlowa." << endl << "Podaj liczbe ponownie: " << endl; cin >> a; } while( a > 0 ); cout << "Podana liczba to: " << endl; cout << a << endl; } }
W drugiej instrukcji po poprawieniu liczby na poprawną, nadal instrukcja wyświetla się ponownie, pomimo, że w while jest napisane, że program ma się zatrzymac kidy liczba bedzie poprawna. |
|
Berux |
» 2013-04-16 18:14:16 Zmień while( a > 0 ); na while( a <= 0 ); , dlatego, że ponawiasz wczytywanie nowej liczby dopóki jest mniejsza lub równa 0, a nie dopóki jest większa od 0 - wtedy przecież liczba jest prawidłowa :) |
|
Szustarol Temat założony przez niniejszego użytkownika |
» 2013-04-16 18:18:49 Dzięki działa, można zamknąć. |
|
Szustarol Temat założony przez niniejszego użytkownika |
» 2013-04-16 18:55:49 No dobra, jestem już przy drugim zadaniu, i pojawia się błąd podobnego pokroju: #include <iostream> using namespace std; int main() { int a; int b; int c; do { cout << "Podaj numer akcji jaka chcesz wykonac i wcisnij [ENTER]" << endl; cout << "[1] Dodawanie " << endl; cout << "[2] Mnozenie " << endl; cout << "[3] Dzielenie" << endl; cout << "[4] Odejmowanie" << endl; cout << "[5] Zakoncz program" << endl; cin >> a; if( a == 1 ) { cout << "Podaj liczbe nr. 1: " << endl; cin >> b; cout << "Podaj liczbe nr. 2 :" << endl; cin >> c; cout << b << "+" << c << "=" << b + c << endl; } if( a == 2 ) { cout << "Podaj liczbe nr. 1: " << endl; cin >> b; cout << "Podaj liczbe nr. 2 :" << endl; cin >> c; cout << b << "x" << c << "=" << b * c << endl; } if( a == 3 ) { cout << "Podaj liczbe nr. 1: " << endl; cin >> b; cout << "Podaj liczbe nr. 2 :" << endl; cin >> c; cout << b << ":" << c << "=" << b / c << endl; } if( a == 4 ) { cout << "Podaj liczbe nr. 1: " << endl; cin >> b; cout << "Podaj liczbe nr. 2 :" << endl; cin >> c; cout << b << "-" << c << "=" << b - c << endl; } if( a >= 6 ); { cout << "Podana liczba jest nieprawidlowa" << endl; } if( a <= 0 ); { cout << "Podana liczba jest nieprawidlowa" << endl; } } while( a == 5 ); }
Działania są wykonywane poprawnie, ale zawsze na końcu wyświetla się dwa razy "Podana liczba jest nieprawidlowa", a poza tym po wciśnięciu klawisza [5] program nie kończy pracy, tylko wyświetla jeszcze raz menu. |
|
« 1 » 2 |