program losujacy

R5
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 14 lat
  • Postów:2
0
Kopiuj
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int liczba2;
int ilosc=0;


  srand( time( NULL ) );
    int liczba = ((rand() % 1000 ) + 1 );

do
{
int liczba2;
cout << "podaj liczbe";
cin >>liczba2;

     if (liczba2 > liczba   )
{


        cout <<"liczba za duza";
}
if (liczba2<liczba)

{
    cout <<"liczba za mala";
}
ilosc++;

}while (liczba2==liczba);
cout <<liczba<<endl;
cout <<"losc strzalow" <<ilosc<<endl;

return 0;
}

Problem polega na tym, że gdy trafie liczbe program nie kończy się tylko dalej prosi o liczbe. W czym robię błąd?

edytowany 1x, ostatnio: madmike
Xupicor
Użyj znaczników <code=cpp>tu twój kod</code>
Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

} while (liczba2==liczba);
a nie powinno być dopóki (liczba2 != liczba)?
edit: poprawiłem, dla jasności...


edytowany 2x, ostatnio: Xupicor
Xupicor
@up - no właśnie != było moją propozycją, podczas gdy == było w oryginalnym kodzie. Nie zrozumieliśmy się, najwyraźniej. :P
prajmus
no dokładnie tak, małe nieporozumienie :p
R5
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 14 lat
  • Postów:2
0

niestety nie pomogło.

_13th_Dragon
Sądzę że zwyczajnie nie trafisz na liczbę, wypisz ją przed pętla.
lemmiwink
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 12 lat
1

niepotrzebnie po raz drugi deklarujesz zmienną 'liczba2' wewnątrz pętli. Ma ona zasięg tylko wewnątrz niej, a warunek jest sprawdzany dla zmiennej 'liczba2' zadeklarowanej przed pętlą..

Xupicor
Ha, rzeczywiście. No i po raz kolejny flaga -Wshadow oszczędziła by kłopotu, bo op zauważyłby również błąd w warunku. ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.