nieskończona pęta do while dlaczego?
Ostatnio zmodyfikowano 2015-03-07 23:32
SE3A Temat założony przez niniejszego użytkownika |
nieskończona pęta do while dlaczego? » 2015-03-07 21:36:18 Witam. Jestem początkujący i zastanawiam się dlaczego po wpisaniu liczby większej niż 10 cyfrowej instrukcja warunkowa "else if" zapętla się w nieskończoność. #include <iostream> #include <windows.h> #include <unistd.h> #include <cstdlib> #include <time.h>
using namespace std;
int losowa_liczba;
int main() { bool przerwij = false; int losuj; int liczba; int ilosc = 0; srand( time( NULL ) ); losuj = rand() % 100 + 1; cout << "Wprowadz liczbe od 1 do 100: " << endl; do { cout << endl; cin >> liczba; cout << endl; if( liczba == losuj ) { ilosc++; cout << "Gratulacje zgadles za " << ilosc << " razem!"; przerwij = true; } else if(( liczba < 1 ) ||( liczba > 100 ) ) { cout << "Musisz wpisac liczbe z zakresu od 1 do 100! Liczba " << liczba << " jest liczba spoza zakresu!" << endl; cout << endl; } else { cout << "Pudlo! Sprobuj jeszcze raz!" << endl; ilosc++; if( liczba < losuj ) { cout << "Podpowiedz: liczba jest wieksza niz " << liczba << endl; } else { cout << "Podpowiedz: liczba jest mniejsza niz " << liczba << endl; cout << endl; } } } while( przerwij == false ); return 0; }
[ cpp ] |
|
Brunon3 |
» 2015-03-07 21:52:53 10 cyfrowej, czyli np. 1000000000? Jeżeli tak, to odpowiedź jest taka; liczba ta wychodzi z zakresu. |
|
kynol |
» 2015-03-07 23:10:34 Poczytaj sobie na temat typow liczb w c++, jaki rodzaj ma ile bajtow/bitow i jakie liczby moze pomiescic, tak pi razy oko, bo to zalezy od systemu operacyjnego. W kompilatorze mozesz sprawdzic np ile bajtow ma np liczba typu int cout << sizeof( int ) << endl;
U mnie wychodzi na to ze ma 4 bajty, 1 bajt=8 bitow, wiec u mnie int ma 32 bity i moze pomiescic wartosci (2^32)/2 jesli ma miescic tez liczby ze znakiem -, a jesli bez - to 2^32 |
|
aksen |
» 2015-03-07 23:32:57 Jak wpiszesz litery program też się zawiesi. Tu masz lekarstwo: do { cin.clear(); cin.sync();
|
|
« 1 » |