Problem z if...else
Ostatnio zmodyfikowano 2015-01-09 19:44
Maczuita Temat założony przez niniejszego użytkownika |
Problem z if...else » 2015-01-09 17:38:34 "Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu: 1. Podaj liczbę 2. Jeżeli błąd, wróć do kroku 1. 3. Wypisz liczbę, która została podana." Oto zadanie, narazie mam takie coś : #include <iostream> int main() { int liczba; std::cout << "Podaj liczbe "; std::cin >> liczba; { if( liczba = std::cin.fail() ) std::cout << "Nieprawidlowa liczba. Wprowadz wlasciwa " << std::endl; std::cin >> liczba; else std::cout << "Twoja liczba to " << liczba << std::endl; } std::cout << "Koniec" << std::endl; return 0; } Podczas próby kompilacji wyskakuje błąd: error: 'else' without a previous 'if' mimo, że mam if oraz {i}. I oto moje pytania: Czy dobrze postawiłem {i} ? Jeśli nie, to jak mam je stawiać, żeby działało prawidłowo? |
|
dawido232307 |
» 2015-01-09 18:08:51 #include <iostream> int main() { int liczba; std::cout << "Podaj liczbe "; std::cin >> liczba; if( liczba == std::cin.fail() ) { std::cout << "Nieprawidlowa liczba. Wprowadz wlasciwa " << std::endl; std::cin >> liczba; } else { std::cout << "Twoja liczba to " << liczba << std::endl; } std::cout << "Koniec" << std::endl; return 0; }
Powinno działać PS. Zapomniałeś dodać drugi znak "=" w warunku. |
|
Maczuita Temat założony przez niniejszego użytkownika |
» 2015-01-09 18:38:51 if( liczba == std::cin.fail() ) Tu musi być 1 znak '=' efekt tego będzie taki, że gdy ktoś zamiast wpisania liczb, napisze coś innego to wyskakuje : Podaj liczbe: wwwww. Nieprawidlowa liczba. Wprowadz wlasciwa Natomiast jakby były 2 znaki '=' wyskoczyło by: Podaj liczbe: wwwww. Twoja liczba to 0 . P.S Dzięki za kod, a jak z tym wstawianiem { }? Jest jakiś uniwersalny sposób? P.S2 Jak zrobić, żeby po std::cout << "Nieprawidlowa liczba. Wprowadz wlasciwa " << std::endl; działał std::cin >> liczba; ? |
|
pekfos |
» 2015-01-09 19:44:52 if( liczba == std::cin.fail() ) Tu musi być 1 znak '=' |
A jaki sens ma to przypisanie? Potrzebujesz tylko sprawdzić wartość fail(). P.S Dzięki za kod, a jak z tym wstawianiem { }? Jest jakiś uniwersalny sposób? |
Tak. P.S2 Jak zrobić, żeby po std::cout << "Nieprawidlowa liczba. Wprowadz wlasciwa " << std::endl; działał std::cin >> liczba; ? |
Wyczyścić flagi błędu w cin. Wszystko masz w kursie. |
|
« 1 » |