Lekcja 15 Zadanie domowe 1
Ostatnio zmodyfikowano 2013-04-10 19:19
MisiekFazi Temat założony przez niniejszego użytkownika |
Lekcja 15 Zadanie domowe 1 » 2013-04-10 17:23:03 Witam otóż mam problem w zadaniu 1. Wszystko jest dobrze i program rozpoznaje jakie ma liczby wczytać i co wtedy ale problem leży z warunkiem if. Oto program #include <iostream> using namespace std; main() { cout << "Witamy w programie." << endl << "Prosze podac liczbe calkowita wieksza od 5, mniejsza od 10" << endl; int liczba; do { cout << "Podaj liczbe "; cin >> liczba; if( liczba <= 5 || liczba >= 10 ) cin.clear(); cout << "Zla liczba. Musisz podac poprawne liczby. Zacznij od nowa." << endl; } while( liczba <= 5 || liczba >= 10 ); cout << "To jest poprawna liczba. Dzieki za skorzystanie"; return 0; }
Gdy podam liczbę całkowita program działa poprawnie jeśli jest równa lub mniejsza od 5 to wie co robić i tak dalej. Ale jeśli liczbę podam po przecinku to jest problem i wyświetla wiadomość "zla ....." bez przerwy. Co to powoduje czy zle zdefiniowana zmienna czy można to jakoś wyeliminować |
|
MrPoxipol |
» 2013-04-10 17:30:55 Nie zabezpieczasz wczytywania, przed złymi danymi. Kod załącz w znacznik [cpp][/cpp] . Wypisuj "zła liczba..." tylko gdy liczba będzie zła. Czyść za każdym razem. |
|
MisiekFazi Temat założony przez niniejszego użytkownika |
» 2013-04-10 18:06:33 ok nie wiem czy dobrze #include <iostream> using namespace std; main() { cout << "Witamy w programie." << endl << "Prosze podac liczbe calkowita wieksza od 5, mniejsza od 10" << endl; int liczba; do { cout << "Podaj liczbe "; cin >> liczba; if( liczba <= 5 || cin.fail() || liczba >= 10 ) cin.clear(); cout << "Zla liczba. Musisz podac poprawne liczby. Zacznij od nowa." << endl; } while( liczba <= 5 || liczba >= 10 ); cout << "To jest poprawna liczba. Dzieki za skorzystanie"; return 0; }
I nadal jest źle, jakby ktoś mógł mi podać jak powinno być poprawnie. |
|
megatron |
» 2013-04-10 18:25:02 skoro ma być większa to czemu piszesz liczba < 5 ??? powinno być if( liczba > 5 && liczba < 10 ) #@#EDIT#@# sry; powinno być mniej więcej tak: #include <iostream> using namespace std; main() { cout << "Witamy w programie." << endl << "Prosze podac liczbe calkowita wieksza od 5, mniejsza od 10" << endl; int liczba; do { cout << "Podaj liczbe "; cin >> liczba; if( liczba >= 5 && liczba <= 10 ); else cout << "Zla liczba. Musisz podac poprawne liczby. Zacznij od nowa." << endl; } while( liczba <= 5 || liczba >= 10 ); cout << "To jest poprawna liczba. Dzieki za skorzystanie"; return 0; }
|
|
MisiekFazi Temat założony przez niniejszego użytkownika |
» 2013-04-10 18:38:52 Ale to nadal nie rozwiązuje problemu z liczbami po przecinku. |
|
megatron |
» 2013-04-10 18:43:12 to zadeklaruj 2 typy zmiennych np. int i double, a potem zrób coś takiego, że z double przechodzi na int; zmienna_typu_int = zmienna_typu_double; |
|
MisiekFazi Temat założony przez niniejszego użytkownika |
» 2013-04-10 18:50:05 a nie ma możliwość że gdy zostanie wpisana zła liczba powracała do funkcji cin |
|
megatron |
» 2013-04-10 19:01:20 no z tym by było ciężej musisz sprawdzac wielkosci liczb; przyklad: #include <iostream> using namespace std; main() { cout << "Witamy w programie." << endl << "Prosze podac liczbe calkowita wieksza od 5, mniejsza od 10" << endl; double liczba; int liczba1; do { do { cout << "Podaj liczbe "; cin >> liczba; liczba1 = liczba; if( liczba1 >= 5 && liczba1 <= 10 ); else cout << "Zla liczba. Musisz podac poprawne liczby. Zacznij od nowa." << endl; } while( liczba != liczba1 ); } while( liczba < 5 || liczba > 10 ); cout << "To jest poprawna liczba. Dzieki za skorzystanie"; return 0; }
|
|
« 1 » 2 |