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

Nieskończona pętla IF

Ostatnio zmodyfikowano 2018-03-27 17:23
Autor Wiadomość
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 ;)
P-170271
pekfos
» 2018-03-26 19:06:01
C/C++
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?
P-170273
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.
P-170275
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).
P-170282
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.

P-170284
aaadam
» 2018-03-27 12:20:46
dodaj cin do pętli

np. coś takiego:

C/C++
if( i > 0 && i < 100 )
{
    do {
        cout << "podaj kolejną liczbę" << endl;
        cin >> i;
        cout << "Podales liczbe: " << i << endl;
    } while( i != 42 );
   
    cout << "Koniec" << endl;
}
P-170296
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 ;)
P-170308
« 1 »
  Strona 1 z 1