[Lekcja 17 ] Zadanie domowe
Ostatnio zmodyfikowano 2016-05-23 09:45
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. #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. |
|
pw1602 |
» 2014-10-22 22:12:09 Zamiast korzystać z pętli for użyj do...while . |
|
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: Obsługa strumienia wejściowego________________________________________ 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. |
|
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. |
|
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. |
|
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? |
|
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 ? |
|
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 ;) |
|
« 1 » 2 3 |