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

Lekcja 16 ( Pseudolosowe liczby calkowite ) zadanie domowe

Ostatnio zmodyfikowano 2012-01-29 11:15
Autor Wiadomość
aro12345
Temat założony przez niniejszego użytkownika
Lekcja 16 ( Pseudolosowe liczby calkowite ) zadanie domowe
» 2012-01-28 20:01:09
Witam. Program działa idealnie poza jednym błędem - po wpisaniu pierwszej liczby ( u mnie zmienna oznaczona abc ) ta liczba tylko się wyświetla i "nie bierze udziału w loterii". Dalej już działa dobrze. Czym jest ten błąd spowodowany?
Zamieszczam kod źródłowy:


C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
    std::cout << "****** LOTERIA by ARO ******" << std::endl;
    srand( time( NULL ) );
    int abc;
    int wynik =( rand() % 10 ) + 1;
    int pozycja = 1;
    std::cout << "Podaj liczbe ( zakres 1 - 10 ) i wcisnij Enter: ";
    while( !( std::cin >> abc ) )
    {
        std::cin >> abc;
        std::cout << "Podano nieprawidlowy znak" << std::endl;
        std::cout << "Sproboj ponownie: " << std::endl;
        std::cin.clear();
        std::cin.sync();
    }
    do
    {
        std::cin >> abc;
        if( abc != wynik )
        {
            std::cout << "Sproboj ponownie: ";
            std::cin.clear();
            std::cin.sync();
        }
        pozycja++;
    } while( abc != wynik );
   
    if( abc == wynik )
    {
        std::cout << "Gratulacje!!!" << std::endl;
        std::cout << "Wylosowana liczba to: " << wynik << std::endl;
        std::cout << "Trafiles za " << pozycja << " razem" << std::endl;
    }
    return 0;
}
P-49709
DejaVu
» 2012-01-28 20:10:30
Masz po prostu źle napisany kod. Musisz go przemyśleć jeszcze raz. Proponuję zacząć od napisania pętli, która będzie tylko sprawdzała 'czy użytkownik zgadł liczbę'. Po napisaniu i przetestowaniu dopisz sprawdzanie czy wartość podana jest poprawna.
P-49710
aro12345
Temat założony przez niniejszego użytkownika
Lekcja 16 ( Pseudolosowe liczby calkowite ) zadanie domowe
» 2012-01-28 21:44:34
Mysle ze caly kod nie jest bledny. Ewentualnie jego czesc. Czy moze mi ktos powiedziec gdzie jest blad?
PS Program normalnie dziala poza pierwszym wpisem - jest on wliczany do liczby trafien ale nawet jak jest poprawnie to nie pojawia sie to co powinno. Drugi wpis dziala juz idealnie.
P-49724
aro12345
Temat założony przez niniejszego użytkownika
» 2012-01-29 11:15:43
Już wiem co jest źle.

   
C/C++
while( !( std::cin >> abc ) )
{
    std::cin >> abc; // <= To jest niepotrzebne
    std::cout << "Podano nieprawidlowy znak" << std::endl;
    std::cout << "Sproboj ponownie: " << std::endl;
    std::cin.clear();
    std::cin.sync();
}
P-49734
« 1 »
  Strona 1 z 1