Nieskończona pętla IF
Ostatnio zmodyfikowano 2018-03-27 17:23
Czuki91 Temat założony przez niniejszego użytkownika |
Nieskończona pętla IF » 2018-03-26 18:37:48 Cześć.
Jest to mój pierwszy post na forum dlatego bardzo proszę o Waszą wyrozumiałość i cierpliwość. Postanowiłem rozpocząć swoją przygodę z C++ jednak jak doskonale wiadomo początki nie zawsze są proste.
Na początek zalogowałem się na stronie spoj.com i postanowiłem zacząć rozwiązywać prostsze zadania. Niestety jedno z pierwszych troszkę mnie przerosło, mianowicie: użytkownik ma wprowadzać liczby z zakresu 1..99 aż do momentu wpisania liczby 42, która kończy program. I tu jest mój problem. Wpisując liczbę 42 program kończy się. Wpisując liczbę z błędnego zakresu program wypisuje powiadomienie, ale w momencie wpisania dobrej liczby, program wypisuje ją w nieskończoność. Oto mój kod:
#include <iostream> //Program ma za zadanie wypisywaæ liczby do póki nie zostanie wprowadzona liczba 42 using namespace std; int main() { int i; cout<<"Podaj liczbe z zakresu 1..99: "<<endl; cin>>i; if(i>0 && i<100) { do{ cout<<"Podales liczbe: "<<i<<endl; }while(i!=42); cout<<"Koniec"<<endl; } else { cout<<"Podales liczbe ze zlego zakresu"<<endl; } return 0; }
Proszę, powiedzcie mi co trzeba zmienić i dlaczego aby program prawidłowo funkcjonował. Dzięki ;) |
|
pekfos |
» 2018-03-26 19:06:01 do { cout << "Podales liczbe: " << i << endl; } while( i != 42 ); |
To jest cała twoja "pętla if". Co twoim zdaniem się będzie działo, jeśli i to 42? |
|
Czuki91 Temat założony przez niniejszego użytkownika |
» 2018-03-26 19:13:30 W momencie podania liczby 42 program kończy się. Czyli tak jak jest to założone. Ale w momencie podania innej liczby z zakresu 1..99 program bez końca wypisuje podaną liczbę. Stąd moje pytanie co jest źle napisane w kodzie? I masz rację, mój błąd, w tytule powinno znajdować się pętla do..while. |
|
garlonicon |
» 2018-03-26 20:49:09 co jest źle napisane w kodzie? |
Nie zmieniasz wartości zmiennej wewnątrz pętli, więc warunek będzie ciągle prawdziwy (i pętla będzie wypisywała komunikat w nieskończoność) lub ciągle fałszywy (i wtedy pętla wykona się tylko raz). |
|
Czuki91 Temat założony przez niniejszego użytkownika |
» 2018-03-26 21:02:18 Czy możesz podać prawidłowe rozwiązanie tego kodu? Wprowadzając wpisywanie zmiennej w pętli program mi się krzaczy.
|
|
aaadam |
» 2018-03-27 12:20:46 dodaj cin do pętli np. coś takiego: if( i > 0 && i < 100 ) { do { cout << "podaj kolejną liczbę" << endl; cin >> i; cout << "Podales liczbe: " << i << endl; } while( i != 42 ); cout << "Koniec" << endl; }
|
|
Czuki91 Temat założony przez niniejszego użytkownika |
» 2018-03-27 17:23:41 Dzięki wielkie za pomoc, temat ogarnięty i do zamknięcia ;) |
|
« 1 » |