Skocz do zawartości

[C++] Problem z grą losową


Recommended Posts

Może nie problem, ale ciekawość, dlaczego w losowych momentach program prosi mnie o zwykle 2-krotne wpisanie liczby, gdyż za pierwszym razem jej nie załapał i nie zwrócił warunku z instrukcji if. Działa dobrze, ale właśnie w niektórych przypadkach olewa moje wprowadzone liczby. Coś nie tak z pętlą? Dodam, że jestem raczej świeżym samoukiem. Próbowałem wyciągnąć pierwszy warunek przed stworzoną pętle do i zawrzeć to w jeszcze jednej (bo może ponawia prośbę o wpisanie danych) pętli, ale problem się raczej potroił.

 

[table]#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: ";
int strzal;
int liczbastrzalow = 0;
cin >> strzal;

do
{

if ( strzal > 1000)
{
cout << "Podaj liczbe od 1 do 1000!" << endl;
cin >> strzal;
}

else
liczbastrzalow ++;

if (liczba < strzal)
{
cout << "Podana liczba jest wieksza od wylosowanej!" << endl;
cin >> strzal;
}

else
cout << "Podana liczba jest mniejsza od wylosowanej!" << endl;
cin >> strzal;

}while ( strzal != liczba);
cout << "Brawo, trafiles dana liczbê za " << liczbastrzalow << " razem." << endl;
return 0;
}
[/table]

Edytowane przez Samzon
Link to post
Share on other sites

Wrzuciłem kod do Visual Studio i normalnie 

http://screenshu.com/static/uploads/temporary/75/bd/8g/3z3sd1.jpg
 
 
Przy dodawaniu nagłówków i bibliotek używaj: <nazwa> lub "nazwa"
 
Już wiem o co Ci chodzi. Jak podasz za pierwszym razem prawidłową odpowiedź to i tak zwróci błąd. Wchodzisz do pętli do...while nie sprawdzając czy trafienie jest prawidłowe od razu. Masz tam if sprawdzający czy liczba jest większa od strzału, jeżeli nie jest to piszę Ci, że jest mniejsza od wylosowanej, czyli nawet jeżeli trafisz za pierwszym razem to warunek będzie przybierał postać FALSE. Są dwa rozwiązania:

  • Zmień to na pętle while i po problemie.
  • Użyj elseif w Do...while
Edytowane przez yormundur
Link to post
Share on other sites

Dzięki wielkie ci, już zrozumiałem i poprawiłem. Może już nie tworząc dodatkowego tematu - mógłby mi ktoś wyjaśnić do czego tak właściwie służy prototyp funkcji. Funkcja działa bez niego i z nim. Czy w późniejszych etapach programowania pomaga z rezerwacją odpowiedniej pamięci, gdy pracujemy na dużych jednostkach? Zauważyłem, że prototyp potrzebny jest jedynie, gdy zawieramy funkcje niepredefiniowane pod main.

 

Okey, też znalazłem - kwestia wygody przy dużych programach, nic nie wpływa na pamięć. Może mnie ktoś poprawić jeśli się mylę.

Edytowane przez Samzon
Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...