[C++] Crash programu


(Puczi19021998) #1

Witajcie, jestem kompletnie zielony, więc próbuję uczyć się C++ z kursu, ale mam problem. Z programem, który wygląda tak:

#include iostream
int wczytajLiczbe()
{
     do
     {
          int a;
          std::cin a;
          if(std::cin.good())
          {
               std::cout std::endl;
               return a;
          }
          else
          {
               std::cout "Zla liczba, sproboj jeszcze raz" std::endl;
          }
     }
     while (std::cin.fail()) ;
}
int main()
{
     std::cout "Podaj liczbe: ";
     int liczba = wczytajLiczbe;
     std::cout "Podales liczbe: " liczba std::endl;
     return 0;
}

Program ładnie się kompiluje, ale gdy podam złą wartość, np. słowo, program się crashuje i ciągle wyskakuje zdanie: ,,Zla liczba, sproboj jeszcze raz", nie dając zmienić liczby Jak to trzeba zrobić, żeby można było zmienić liczbę, gdy poda się złą wartość? Proszę o szybkie odpowiedzi i z góry za nie dziękuję.


(kostek135) #2

Wczytujesz napis i sprawdzasz czy napis spełnia warunki bycia liczbą.


(Puczi19021998) #3

No właśnie jest taki problem, że jak wczytam napis, to program łapie crasha i mam:

Zla liczba sproboj jeszcze raz

Zla liczba sproboj jeszcze raz

Zla liczba sproboj jeszcze raz

Zla liczba sproboj jeszcze raz

Zla liczba sproboj jeszcze raz

Zla liczba sproboj jeszcze raz

Zla liczba sproboj jeszcze raz

Zla liczba sproboj jeszcze raz

....

 

dopóki nie wyłącze. A mi chodzi o to, żeby dało się jeszcze zmienić jak już wpiszę tekst.


(enedil) #4

Dodaj cin.clear() po tym coucie.


(Puczi19021998) #5

 

Sprawdzałem po wszystkich coutach i nadal tak samo jest, tylko przy jednym mi pokazało, że podałem jakąś dużą liczbę której w ogóle nie podawałem.


(Puczi19021998) #6

Sam rozwiązałem problem. std::cin.clear(); trzeba było dać na początku przed int a; . I tak dziękuję wam za pomoc.