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

[Lekcja 16] Zadanie domowe - Zabezpieczenie maszyny losującej przed wprowadzaniem błędnych wartości liczbowych

Ostatnio zmodyfikowano 2013-02-09 16:08
Autor Wiadomość
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:

C/C++
#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.

C/C++
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.

P-76019
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.
P-76020
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?
P-76021
kubawal
» 2013-02-09 14:37:20
Ogólny algorytm wprowadzania danych wygląda następująco:
C/C++
// wprowadz dane
while( /*dane sa nieprawidlowe*/ )
{
    // powiadom uzytkownika
    // wprowadz dane
}
// zrob cos z tymi danymi
W twoim przypadku zamiast
/*dane sa nieprawidlowe*/
 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".
P-76022
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.
P-76023
kubawal
» 2013-02-09 15:48:43
To jest pętla while a nie do...while.
P-76027
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.
P-76032
« 1 »
  Strona 1 z 1