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

nieskończona pęta do while dlaczego?

Ostatnio zmodyfikowano 2015-03-07 23:32
Autor Wiadomość
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ść.

C/C++
#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 ]
P-127920
Brunon3
» 2015-03-07 21:52:53
10 cyfrowej, czyli np. 1000000000?
Jeżeli tak, to odpowiedź jest taka; liczba ta wychodzi z zakresu.
P-127924
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

C/C++
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
P-127928
aksen
» 2015-03-07 23:32:57
Jak wpiszesz litery program też się zawiesi.
Tu masz lekarstwo:

C/C++
do
{
    // tego brakuje (wstaw po "do")
    cin.clear();
    cin.sync();
P-127931
« 1 »
  Strona 1 z 1