Lekcja 15
Ostatnio zmodyfikowano 2013-01-05 13:52
Fusol13 Temat założony przez niniejszego użytkownika |
Lekcja 15 » 2012-12-28 13:39:09 Gdy wpisze liczbę różną od zera to wyskakuje mi "Blad" zamiast "Podales liczbe: " i nie wiem czemu. #include <iostream> int main() { int liczba; std::cout << "Podaj liczbe rozna od zera: "; std::cin >> liczba; switch( liczba ) { case 0: do { std::cin.clear(); std::cin.sync(); std::cout << "Podales zla liczbe. " << std::endl; std::cout << "Podaj liczbe rozna od zera. " << std::endl; std::cin >> liczba; } while( !liczba != 0 ); break; case !0: std::cout << "Podales liczbe: " << liczba << std::endl; break; default: std::cout << "Blad " << std::endl; } return 0; }
|
|
jsc |
» 2012-12-28 14:07:20 Widać przypadek !0 nie istnieje, bo jest np. zbyt wieloznaczny (cała rozpiętość typu zmiennej oprócz 0). |
|
Mike148 |
» 2012-12-28 14:30:39 U mnie ten kod działa |
|
crash |
» 2013-01-05 03:38:55 Ja bym zrobił inaczej, pętla sprawdza czy liczba podana jest różna od zera, jeśli nie to pętla jeszcze raz się wykonuje; a później dopiero switch, o ile będzie w ogóle potrzebny. |
|
MeGameOne |
» 2013-01-05 07:52:42 Najlepszym i najlatwiejszym bylo by zastosowanie funkcji if(). #include <iostream>
int main() { int liczba; std::cout << "Podaj liczbe rozna od zera: "; std::cin >> liczba; if(( liczba > 0 ) ||( liczba < 0 ) ) { do { std::cout << "Podales zla liczbe. " << std::endl; std::cout << "Podaj liczbe rozna od zera. " << std::endl; std::cin >> liczba; } while( !liczba != 0 ); } else { std::cout << "Blad " << std::endl; } if( liczba == 0 ) { std::cout << "Podales liczbe: " << liczba << std::endl; } else { std::cout << "Blad " << std::endl; } return 0; }
|
|
xevuel |
» 2013-01-05 08:28:05 @MeGameOne, Po pierwsze, if to nie jest funkcja. Po drugie, nie rozumiesz ani kodu który napisał @Fusol13, ani działania operatorów logicznych. Podany przez Ciebie kod jest błędny. @Fusol13, Sprawdzaj, czy liczba jest prawidłowa po wczytaniu, np. tak: #include <iostream>
int main() { int liczba; do { std::cout << "Podaj liczbe rozna od zera. " << std::endl; std::cin >> liczba; if( liczba == 0 ) { std::cout << "Podales zla liczbe. " << std::endl; continue; } std::cout << "Podales liczbe: " << liczba << std::endl; } while( liczba == 0 ); return 0; }
|
|
MeGameOne |
» 2013-01-05 11:48:12 Ja to pisałem jak sie zaraz obudzilem, nie bądź na mnie zły. Pomylilem sie tylko przy (do i while ). Nie widzę tam innych błędów. |
|
xevuel |
» 2013-01-05 12:03:16 @MeGameOne, Pierwszy lepszy przykład: if(( liczba > 0 ) ||( liczba < 0 ) ) czy też: if( liczba == 0 ) { std::cout << "Podales liczbe: " << liczba << std::endl; } Skompiluj sobie ten Twój kod i zobacz jak działa... |
|
« 1 » 2 |