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

Prosty kod C++

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
2,464 wizyt
pytanie zadane 28 sierpnia 2016 w C i C++ przez Julenissen Początkujący (270 p.)

Cześć wszystkim, 

Na stronie Polski SPOJ (kto nie zna, temu polecam do nauki programowania) znalazłem do napisania prosty program który pobiera od użytkownika 2 liczby calkowite, nie większe od 200. Następnie je sumuje i wyrzuca wynik. Banał.

W programie zawarłem warunek do spełnienia dla liczby tak żeby została zaakceptowana i umieściłem go nieskończonej pętli. Mój problem polega na tym, że można podawać programowi nieporawne liczby (on to wychwyci i poprosi o podanie poprawnej liczby) jednak gdy podamy już poprawną liczbę to program się zatrzymuje i nie żąda podania drugiej liczby. Przypuszczam, że jest to związane z tym iż pętla się wykonała do końca. Jednak moja bardzo skromna wiedza podpowiada mi, że program lecąc z góry na dól i wykonując kolejne linie kodu powinien wyjść z pętli i iść dalej, czyż nie? Dlaczego więc program się zatrzymuje?

Pozdrawiam

#include <iostream>

using namespace std;
int a,b;

int main()
{   cout<<"Program sumuje 2 liczby calkowite, nie wieksze od 200"<<endl;

    cout<<"Podaj pierwsza liczbe: ";
    cin>>a;
    while(true)
    {
    if (a<1||a>200)
    {cout<<"Liczba niepoprawna, podaj jeszcze raz: "; cin>>a;}
    }

    cout<<"Podaj druga liczbe: ";
    cin>>b;
    while(true)
    {
    if (b<1||b>200)
    {cout<<"Liczba  niepoprawna, podaj jeszcze raz: "; cin>>b;}
    }

    cout<<a+b;
    return 0;

}

 

3 odpowiedzi

+1 głos
odpowiedź 28 sierpnia 2016 przez niezalogowany
wybrane 28 sierpnia 2016 przez Julenissen
 
Najlepsza

Pętlę:

while(true)
    {
    if (a<1||a>200)
    {cout<<"Liczba niepoprawna, podaj jeszcze raz: "; cin>>a;}
    }

Spróbuj zamienić na:

while(a < 1 || a>200)
    {
    cout<<"Liczba niepoprawna, podaj jeszcze raz: ";
    cin>>a;
    }

Lub po prostu po wykonaniu ifa wyjdź z pętli za pomocą "break".

 

komentarz 28 sierpnia 2016 przez Julenissen Początkujący (270 p.)
Dziękuję Ci bardzo za podpowiedź :) Podmieniona pętla działa
+1 głos
odpowiedź 28 sierpnia 2016 przez Owczarek Niemiecki Obywatel (1,570 p.)
Pętla "while(true)" wykonuje się w nieskończonośc także, nie wyjdzie Ci poza nią :)
komentarz 28 sierpnia 2016 przez Julenissen Początkujący (270 p.)
Masz rację :) dzięki za odpowiedź
0 głosów
odpowiedź 28 sierpnia 2016 przez niezalogowany
Swoją droga, co do wejścia zadań na spoju to nie do końca chodzi o to aby zabezpieczyć przed podaniem niepoprawnych danych tylko to jest dla naszej wiadomości, abyśmy mogli np. dostosować zmienne, ewentualnie jakieś konwersje, nie trzeba robić kontroli, oczywiście jak kto woli ;)

Podobne pytania

0 głosów
1 odpowiedź 123 wizyt
pytanie zadane 16 maja 2016 w JavaScript przez niezalogowany
–2 głosów
2 odpowiedzi 519 wizyt
pytanie zadane 25 kwietnia 2016 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
–2 głosów
2 odpowiedzi 297 wizyt

90,900 zapytań

139,572 odpowiedzi

313,905 komentarzy

60,373 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...