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

[C++] Błędne działanie pętli do...while

Ostatnio zmodyfikowano 2012-11-22 16:26
Autor Wiadomość
Hikamare
Temat założony przez niniejszego użytkownika
[C++] Błędne działanie pętli do...while
» 2012-11-22 00:54:29
Poddaję się - siedzę nad tym już od godziny, próbuję cały czas zmieniać kod, ale to nic nie daje - czy ktoś może mi powiedzieć co jest nie tak w tym kodzie ?

C/C++
#include <iostream>
#include <cstdio>
using namespace std;

int main() {
    /*okreœlanie zmiennych*/
    int wzrost = 0;
    int waga = 0;
    bool cm = 0;
    bool kg = 0;
    /*koniec zmiennych*/
   
    /*Podanie wzrostu przy spr. popr. wart.,
    min. i max.*/
    cout << "Podaj swoj wzrost (w cm) : ";
    do {
        cin.clear();
        cin.sync();
        cin >> wzrost;
        cout << endl << wzrost << " " << cm;
       
        if( wzrost == cin.fail() ) {
            cout << "Podaj wartosc liczbowa!" << endl;
            cm == 0;
        }
        else if( wzrost <= 100 ) {
            cout << "Nie jestes taki niski!" << endl;
            cm == 0;
        }
        else if( wzrost >= 250 ) {
            cout << "Nie jestes az tak wysoki!" << endl;
            cm == 0;
        }
        else {
            cm == 1;
        }
    } while( cm = 0 );
   
    return 0;
}

Nawet po wpisaniu wartości 250 i tak wyskakuje komunikat "Nie jesteś taki niski!"
P-69680
DejaVu
» 2012-11-22 01:22:29
Spróbuj napisać program od zera i pomiń cały kod związany z poprawnym wczytywaniem danych. Opisany problem nie leży bowiem w pętli while.
P-69681
Mrovqa
» 2012-11-22 08:24:27
@Hikmare operator porównania i przypisania to nie jest to samo. Dodam, iż błędy masz w wielu miejscach.
P-69684
wojownik266
» 2012-11-22 08:49:52
Poniżej nieco poprawiony kod programu.

C/C++
#include <iostream>
#include <cstdio>
using namespace std;

int main() {
    /*okreœlanie zmiennych*/
    int wzrost = 0;
    int waga = 0;
    bool cm = 0;
    bool kg = 0;
    /*koniec zmiennych*/
   
    /*Podanie wzrostu przy spr. popr. wart.,
        min. i max.*/
    cout << "Podaj swoj wzrost (w cm) : ";
    do {
        cin.clear();
        cin.sync();
        cin >> wzrost;
        cout << endl << wzrost << " " << cm;
       
        if( wzrost == cin.fail() ) {
            cout << "Podaj wartosc liczbowa!" << endl;
            cm = 0;
        }
        else if( wzrost <= 100 ) {
            cout << "Nie jestes taki niski!" << endl;
            cm = 0;
        }
        else if( wzrost >= 250 ) {
            cout << "Nie jestes az tak wysoki!" << endl;
            cm = 0;
        }
        else {
            cm = 1;
        }
    } while( cm = 0 );
   
    return 0;
}
P-69685
Mrovqa
» 2012-11-22 09:30:15
@wojownik266 jeżeli ten błąd, który razi w oczy popełniłeś specjalnie, to przynajmniej byś zaznaczył, że to lekka pomoc, ale kod jest nadal w części błędny - unikniemy kolejnych pytań, dlaczego nie działa.
P-69686
Hikamare
Temat założony przez niniejszego użytkownika
» 2012-11-22 16:15:40
Najdziwniejsze jest to, że teraz niby wszystko działa, jednak wystarczy np. raz podać za wysoką wartość, a później ją ponowić i program nie wykonuje pętli ponownie.

Poddaję się, nie wiem, co może być nie tak.


C/C++
do {
    if( wzrost <= 100 ) {
        cout << "Nie jestes taki niski!" << endl;
        cin.clear();
        cin.sync();
        cin >> wzrost;
        cm = 0;
    }
    else if( wzrost >= 250 ) {
        cout << "Nie jestes az tak wysoki!" << endl;
        cin.clear();
        cin.sync();
        cin >> wzrost;
        cm = 0;
    }
    else {
        cm = 1;
    }
} while( cm = 0 );

P-69690
SeaMonster131
» 2012-11-22 16:22:19
C/C++
} while( cm = 0 );

Zapamiętaj:
== to operator porównania (np.
if( a == b )
)
=  to operator przypisania (np.
int a = b;
)
P-69691
Hikamare
Temat założony przez niniejszego użytkownika
» 2012-11-22 16:26:01
oO' błąd tak trywialny, że aż wstyd się do niego przyznawać.
P-69692
« 1 »
  Strona 1 z 1