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

[Lekcja 17 ] Zadanie domowe

Ostatnio zmodyfikowano 2016-05-23 09:45
Autor Wiadomość
lukhol
Temat założony przez niniejszego użytkownika
[Lekcja 17 ] Zadanie domowe
» 2014-10-22 21:38:20
Cześć. Do napisania jest program przyjmujący tylko liczby. W przypadku wpisania innego znaku ponownie prosi o podanie liczby.

C/C++
#include <iostream>
using namespace std;

int wczytajLiczbe()
{
    int liczbaDwa;
    for( int i = 0; i < 100; i++ )
    {
        cin >> liczbaDwa;
        if( liczbaDwa != 0 ) break;
       
    }
   
    return liczbaDwa;
}

int main()
{
    cout << "Podaj liczbe: ";
    int liczba = wczytajLiczbe();
    cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}

Nie rozumiem czemu przy każdym kolejnym wykonaniu pętli for program nie czeka na wpisanie nowej wartości zmiennej liczbaDwa.
P-119233
pw1602
» 2014-10-22 22:12:09
Zamiast korzystać z pętli
for
 użyj
do...while
.
P-119236
Rashmistrz
» 2014-10-22 22:52:06
@pw1602
To niczego nie zmieni.
To niczego na razie nie zmieni.
________________________________________

Nie rozumiem czemu przy każdym
kolejnym wykonaniu pętli for
program nie czeka na wpisanie
nowej wartości zmiennej liczbaDwa.
Możliwe że podałeś zero, bądź
"zapchałeś" bufor tekstem/znakiem.

Co do drugiej możliwości,
odsyłam cię tu:
» Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja
________________________________________

EDIT:
Z tego co widzę jak na razie rozwiązanie tego
podpunktu zadania nie idzie Ci dobrze...

EDIT2:
for( int i = 0; i < 100; i++ )

Do tego podpunktu nie potrzeba
liczb i inkrementacji! Wystarczą
operatory logiczne i zmienne typu
logicznego...

i oczywiście, będzie ci łatwiej
wykonać zadanie używając pętli do...while.
P-119237
pw1602
» 2014-10-22 23:23:03
Mi właśnie chodziło o to, aby użył
do...while
 by sam mógł również znaleźć problem.
P-119238
Rashmistrz
» 2014-10-22 23:47:22
@pw1602
Mi właśnie chodziło o to, aby użył do...while
by sam mógł również znaleźć problem.
Ok. A ja się na początek zacząłem martwić
o to że nie użył on metod
.good();

i bądź lub
.fail();
 do sprawdzenia
poprawności wczytania.
P-119241
Memento96
» 2014-10-23 20:53:44
Bo tego jeszcze w kursie nie miał? Jak ma stosować coś o czym nie ma pojęcia jak działa?
P-119264
lukhol
Temat założony przez niniejszego użytkownika
a
» 2014-10-23 21:01:02
Dalej nie uporałem się z tym problemem, zmiana pętli na do while i tak nic poza uproszczeniem kodu w tym przypadku nie da. Ma ktoś jakieś pomysły czemu cin nie działa w tej pętli ?
P-119265
Memento96
» 2014-10-23 21:26:32
Ponieważ  w pętli do...while nie prosisz ponownie o podani a odrazu przypisujsz, nie wyjdzie do maina bo cały czas pętla trwa ;)
P-119266
« 1 » 2 3
  Strona 1 z 3 Następna strona