Rozbudowany warunek pętli for
Ostatnio zmodyfikowano 2015-10-17 21:39
Artik94 Temat założony przez niniejszego użytkownika |
Rozbudowany warunek pętli for » 2015-10-17 18:46:56 #include <iostream> using namespace std; int main() { double k; char a;
for (k = 7; k >=0 ; k--) {
cout << "Czy ta liczba jest mniejsza od " << k << endl << " tak = 't' , nie = 'n'" << endl; cin >> a;
if (a == 'n') { cout << "Ta liczba to " << k << endl; break; } } system("pause"); return 0;
}
Powyższy program działa. Jeśli jednak usunę instrukcję "break;" i zmienię pętlę for na: for (k = 7; k >=0 || a=='n' ; k--) { Program po wpisaniu 'n' nadal będzie zadawał pytania. Dlaczego się nie kończy mimo warunku w pętli?
|
|
pekfos |
» 2015-10-17 18:54:01 Źle warunek złożyłeś. |
|
Artik94 Temat założony przez niniejszego użytkownika |
» 2015-10-17 19:31:31 Spodziewam się. A jak powinien wyglądać i dlaczego jest zły? |
|
pekfos |
» 2015-10-17 20:34:57 Skoro się spodziewałeś, to dlaczego nie obliczyłeś sobie w myślach wartości tego warunku dla paru przypadków i sam się nie przekonałeś, dlaczego jest zły..? Pętla się kręci, gdy warunek jest prawdziwy. Dla a równego 'n', k przestaje nawet mieć znaczenie. |
|
Artik94 Temat założony przez niniejszego użytkownika |
» 2015-10-17 21:20:07 Faktycznie, ale jeśli ustalę warunek: a!= 'n' Nadal mimo klikania n, pętla się kręci dalej. Gdy warunek jest prawdziwy czyli a='t' pętla działa. Ale w takim razie gdy wciskam n, to warunek już nie jest spełniony i pętla powinna się skończyć, a się nie kończy. |
|
Gibas11 |
» 2015-10-17 21:39:52 Zły operator logiczny między warunkami, zamiast || powinieneś użyć &&. Ps. W kodzie lepiej prezentują się or i and, np: for( k = 7; k >= 0 and a != 'n'; k-- ) { ... }
|
|
« 1 » |