[Lekcja 16] Zadanie domowe - Zabezpieczenie maszyny losującej przed wprowadzaniem błędnych wartości liczbowych
Ostatnio zmodyfikowano 2013-02-09 16:08
Frish Temat założony przez niniejszego użytkownika |
[Lekcja 16] Zadanie domowe - Zabezpieczenie maszyny losującej przed wprowadzaniem błędnych wartości liczbowych » 2013-02-09 14:14:03 Witam stworzyłem maszynę losującą której kod przedstawia się w następujący sposób: #include <iostream> #include <cstdlib> #include <ctime> int main() { srand( time( NULL ) ); int liczba =( rand() % 10 ) + 1; int a; int ile; int powtorzenia = 1; std::cout << std::endl << "Zgadujesz liczbe z zakresu od 1 do 10" << std::endl << std::endl; std::cout << "Zgadnij liczbe: "; std::cin >> a; do { if( a > 10 || a < 1 ) { std::cout << "\t\t\tLiczba spoza zakresu" << std::endl; std::cout << "Podaj poprawna: "; std::cin >> a; powtorzenia++; } } while( a > 10 || a < 1 ); if( a == liczba ) { std::cout << std::endl << std::endl << "Trafiles" << std::endl; std::cout << "Statystyka strzalow: " << powtorzenia; std::cout << std::endl << std::endl << "GAME OVER :D"; } do { if( a > liczba || a < liczba ) { std::cout << "Nietrafione, podaj jeszcze raz: "; std::cin >> a; powtorzenia++; do { if( a > 10 || a < 1 ) { std::cout << "\t\t\tLiczba spoza zakresu" << std::endl; std::cout << "Podaj poprawna: "; std::cin >> a; powtorzenia++; } } while( a > 10 || a < 1 ); if( a > 10 || a < 1 ) { std::cout << "\t\t\tLiczba spoza zakresu" << std::endl; std::cout << "Podaj poprawna: "; std::cin >> a; powtorzenia++; } if( a == liczba ) { std::cout << std::endl << std::endl << "Trafiles" << std::endl; std::cout << "Statystyka strzalow: " << powtorzenia; std::cout << std::endl << std::endl << "GAME OVER :D"; } } } while( ile > 0 ); return 0; }
Teraz pytanie: Czy ten kod i program spełniają warunek zadania domowego z lekcji nr 16 o takiej treści "Gra ma być zabezpieczona przed możliwością wprowadzenia błędnych wartości liczbowych."? Czy autor miał coś zupełnie innego na myśli prosząc o zabezpieczenie błędnej wartości liczbowej? To jest mój fragment kodu którym chciałem ten warunek zadania spełnić. Zakres z którego maszyna losuje to liczby od 1 do 10, a wszystkie inne liczby wprowadzone do maszyny są błędnymi wartościami liczbowymi, tak to zrozumiałem. if( a > 10 || a < 1 ) { std::cout << "\t\t\tLiczba spoza zakresu" << std::endl; std::cout << "Podaj poprawna: "; std::cin >> a; powtorzenia++; } } while( a > 10 || a < 1 );
Proszę o podpowiedzi i ewentualne wskazanie drogi do właściwego rozwiązania zadania. |
|
kubawal |
» 2013-02-09 14:22:00 A działa? Czy gdy podasz nieprawidłowe dane, działa niepoprawnie? Wszystkie tematy z kategorii "Proszę o sprawdzenie zadania", "Czy zrobiłem to dobrze?" są bez sensu. Jeśli program działa, jesteś z niego zadowolony i wystarczająco dobrze reaguje na błędy, to tak.
|
|
Frish Temat założony przez niniejszego użytkownika |
» 2013-02-09 14:27:32 A jest możliwość przed chronieniem takiego wpisu przed wprowadzeniem np litery czyli niewłaściwego znaku? |
|
kubawal |
» 2013-02-09 14:37:20 Ogólny algorytm wprowadzania danych wygląda następująco: W twoim przypadku zamiast możesz wstawić warunek: cin.fail() || liczba < 0 || liczba > 9 Sprawdza on czy "Nie udało się wczytać liczby lub liczba jest mniejsza od 0 lub liczba jest większa od 9". |
|
Frish Temat założony przez niniejszego użytkownika |
» 2013-02-09 14:50:07 czyli pod "while" można dać jeszcze nawiasy w ktorych zawrze się pewne instrukcje? Bo w lekcji z pętlą "do...while" było tylko pokazane że "while" ma kończyć pętlę. Chyba że w ogóle myle teraz pojecia. |
|
kubawal |
» 2013-02-09 15:48:43 To jest pętla while a nie do...while. |
|
Frish Temat założony przez niniejszego użytkownika |
» 2013-02-09 16:08:09 Czyli to jeszcze przede mną. Dzięki wielkie za wyjaśnienie. |
|
« 1 » |