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

Gra losująca liczbę

Ostatnio zmodyfikowano 2013-02-02 05:26
Autor Wiadomość
Matti
Temat założony przez niniejszego użytkownika
Gra losująca liczbę
» 2011-06-04 12:44:50
Witam. Pisałem zadanie domowe z działu "Pseudolosowe liczby całkowite".
Treść zadania:
Twoim zadaniem domowym jest napisanie prostej gry, która ma działać następująco:
1. Program losuje liczbę z przedziału od 1 do 1000.
2. Użytkownik zgaduje liczbę, która została wylosowana.
3. Jeżeli podana liczba jest za duża (za mała) gra wypisuje stosowny komunikat i powraca do kroku 2.
4. Jeżeli gracz trafi liczbę wylosowaną to progam kończy działanie, wypisując na ekran wylosowaną liczbę oraz liczbę 'strzałów', które oddał gracz.
Gra ma być zabezpieczona przed możliwością wprowadzenia błędnych wartości liczbowych.

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    srand( time( NULL ) );
    int liczba =( rand() % 1000 );
    cout << "Podaj liczbe od 1 do 1000." << endl;
    int strzal;
    int liczbastrzalow = 0;
    cin >> strzal;
    do
    {
        if( strzal > 1000 )
        {
            cout << "Podaj liczbe od 1 do 1000!" << endl;
            cin >> strzal;
        }
        else
             liczbastrzalow++;
       
        if( strzal > liczba )
        {
            cout << "Wylosowana liczba jest mniejsza od Twojej typowanej." << endl;
            cout << "Sprobuj ponownie." << endl;
            cin >> strzal;
        }
        else
             cout << "Wylosowana liczba jest wieksza od Twojej typowanej. Sprobuj ponownie." << endl;
       
        cin >> strzal;
    } while( strzal != liczba );
   
    cout << "Brawo, trafiles we wlasciwa liczbe! Dana liczba bylo " << liczba << ". Strzelales " << liczbastrzalow << " razy!" << endl;
    return 0;
   
}

Wszystko byłoby dobrze, ale mam pewien problem. Czasem muszę dwa razy wpisać swoją propozycję liczby, żeby program mi odpowiedział.
screen : http://img339.imageshack.us/img339/5783/losowaniem.png

Nie wiem jak rozwiązać ten problem. Może coś nie tak z kodem?
P-33819
SeaMonster131
» 2011-06-04 13:00:48
Po mojemu jak masz tutaj:
C/C++
if( strzal > liczba )
{
    cout << "Wylosowana liczba jest mniejsza od Twojej typowanej." << endl;
    cout << "Sprobuj ponownie." << endl;
    cin >> strzal;
}
To na końcu pętli też masz
C/C++
cin >> strzal;
} while( strzal != liczba );


Więc jeżeli wpiszesz liczbe większą od wylosowanej to warunek w if'ie = true, dlatego musisz wpisać następną liczbę (te cin>>strzal w if'ie) a następnie jeszcze raz wpisać liczbę (cin>>strzal pod koniec pętli).. :)
P-33820
Mrowqa
» 2011-06-04 13:05:30
C/C++
if( strzal > liczba )
{
    cout << "Wylosowana liczba jest mniejsza od Twojej typowanej." << endl;
    cout << "Sprobuj ponownie." << endl;
    cin >> strzal;
}
else // if( strzal < liczba )
     cout << "Wylosowana liczba jest wieksza od Twojej typowanej. Sprobuj ponownie." << endl;

W twoim przypadku jak zgadniesz liczbę to Ci mówi, że jest za mała :) Taki malutki błędzik z boku.

Pozdrawiam,
Mrowqa
P-33821
Matti
Temat założony przez niniejszego użytkownika
» 2011-06-04 16:31:22
Nie do końca rozumiem co macie na myśli, ale program działa dobrze i jak trafię odpowiednią liczbę, to pojawia się komunikat, że trafiłem. Polecam skompilować u siebie i przetestować. Może znowu tylko u mnie pojawiają się dziwne błędy jak z moim kalkulatorem, a u innych jest dobrze. :)
P-33828
malan
» 2011-06-04 17:26:11
Dwa razy ją odczytujesz, więc co się dziwisz :)
P-33832
Quamca
» 2013-02-02 05:26:59
<< removed by xevuel - Ładny odkop... załóż własny temat >>
P-75586
« 1 »
  Strona 1 z 1