Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rozbudowany warunek pętli for

Ostatnio zmodyfikowano 2015-10-17 21:39
Autor Wiadomość
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?
P-138733
pekfos
» 2015-10-17 18:54:01
Źle warunek złożyłeś.
P-138735
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?
P-138736
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.
P-138739
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.
P-138741
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:
C/C++
for( k = 7; k >= 0 and a != 'n'; k-- )
{
    ...
}
P-138743
« 1 »
  Strona 1 z 1