• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program w C++ wpada w nieskończoną pętlę i się zwiesza

Object Storage Arubacloud
0 głosów
332 wizyt
pytanie zadane 9 maja 2017 w C i C++ przez niezalogowany

Program ma za zadanie dodawać nieskonczoną ilość liczb wpisanych przez użytkownika.                          

#include <iostream>
#include <windows.h>

using namespace std;

void calculator()
{
    int a,b = 0;
    bool loop = true;
    while(loop){
        cout<<"> Podaj liczbe:";
        if(cin>>a) b=a+b;
        else loop=false;
    }
    cout<<"Wynik: "<<b<<endl;
}

int main()
{
    while(true){
        cout<<"=== MENU GLOWNE ==="<<endl;
        cout<<"1.Kalkulator"<<endl;
        cout<<"0.Wyjscie"<<endl;
        int wybor;
        if(!(cin>>wybor)) cout<<"Blad!"<<endl;
        switch(wybor)
        {
            case 0: exit(0); break;
            case 1: calculator(); break;
            default: cout<<"Nie ma takiej opcji"<<endl;
        }
    }
    return 0;
}



> Przebieg testu :

- Wybranie 1 opcji w menu głównym

- Wpisanie pierwszej dowolnej liczby

- Wpisanie drugiej dowolnej liczby

- Wpisanie dowolnej litery

! Program wpada w nieskończoną pętle i nic z nim niemożna zrobić !

> Jak powinien działać program :

- Wybranie 1 opcji w menu głównym

- Wpisanie pierwszej dowolnej liczby

- Wpisanie drugiej dowolnej liczby

- Wpisanie dowolnej litery

- Wyświetlenie wyniku dodawania liczb

- Pojawienie się mnu głównego

1 odpowiedź

0 głosów
odpowiedź 9 maja 2017 przez 10kw10 Pasjonat (22,880 p.)
wybrane 9 maja 2017
 
Najlepsza
int wybor;
        std::cin>>wybor;
        while(!cin.good())
        {
            std::cout<<"Blad"<<std::endl;
            std::cin.clear();
            std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
            std::cin>>wybor;
        }

 

komentarz 9 maja 2017 przez niezalogowany

Nie rozumiem znacznia tej linijki:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');

Wytłumaczyłbyś mi co ona robi?

komentarz 9 maja 2017 przez 10kw10 Pasjonat (22,880 p.)
powoduje wyczyszczenie bufora cin, az do napotkania '\n'
komentarz 9 maja 2017 przez niezalogowany

Po podmienieniu na twój kod mam takie błędy:

komentarz 9 maja 2017 przez 10kw10 Pasjonat (22,880 p.)

a no tak zapomnialem dodac:

#include <limits>

 

komentarz 9 maja 2017 przez niezalogowany
Dziękuję za pomoc i wyjaśnienie kodu.

Podobne pytania

0 głosów
1 odpowiedź 80 wizyt
pytanie zadane 15 kwietnia 2018 w C i C++ przez Lucash Nowicjusz (240 p.)
+1 głos
0 odpowiedzi 345 wizyt

92,624 zapytań

141,482 odpowiedzi

319,822 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...