[Lekcja 17] wczytaj liczbę
Ostatnio zmodyfikowano 2013-06-21 08:34
narutoza Temat założony przez niniejszego użytkownika |
[Lekcja 17] wczytaj liczbę » 2013-06-20 21:14:32 Chcąc zrobić program który wczytuje liczbę w funkcji, a jeżeli jest ona niepoprawna, to pyta jeszcze raz. Jednak "przy realizacji" napodkałem 2 problemy, a mianowicie: 1. podałem że liczba jest intem, tak wiec liczyłem, ze jeśli podam nienaturalną to program wyrzuci błąd. Tak się jednak nie stało. Liczba zczytuje sie do kropki(co akurat rozumiem) i szczęśliwy zwraca odczytaną wartość. Tak było zanim przekombinowałem. 2. Po przekombinowaniu dzieją sie rzeczy niezwykłe, a mianowicie program nie pisze nic po tym jak wstawiam dane. Kod: #include <iostream> using namespace std;
int wczytaj_liczbe() { int liczba = 0; bool sukces = 0; do { cin >> liczba; bool sukces = cin.good(); } while( sukces == false ); return liczba; }
int main() { cout << "Podaj liczbe: \n"; int liczba = wczytaj_liczbe(); cout << "Twa liczba to " << liczba << endl; return 0; }
|
|
dallahpl |
» 2013-06-20 21:56:45 ciut przekabinowales;) w funkcji main(), w.g mnie powinienes napisac: wczytaj_liczbe(libcza). Dodatkowo to w w/w funkcji powinienes wpisywac te liczbe, czyli: cin >> liczba;. int main() { int liczba; cout << "Podaj liczbe: \n"; cin >> liczba; wczytaj_liczbe( liczba ); return 0; }
|
|
Rafals |
» 2013-06-20 23:22:06 Nie wiem czy dobrze zrozumiałem testując Twój problem (sam jestem początkujący) wychodzi na to, że masz zdeklarowaną zmienną "sukces" przed pętlą z wartością "0". Potem w pętli masz znowu deklarację. Teraz z testów wynika, że pętla używa zmiennej z początku funkcji, także w Twoim przypadku zmienna "sukces" będzie zawsze miała wartość "false". Wywal bool-a z pętli, dodaj czyszczenie strumienia i będzie śmigać.
Co do mojego tłumaczenia dlaczego nie działa to tak jak mówię, głowy za poprawność tych wniosków nie dam. Najwyżej ktoś mądrzejszy poprawi. Pozdrawiam.
@ Dallah Do funkcji nie musisz przekazywać zmiennych, to co zrobił Narutoza to po prostu teraz ma gotową funkcję do wczytywania zmiennych. |
|
cichociemny |
» 2013-06-20 23:39:56 Musisz narutoza poczytac wiecej o funkcjach, w tym o bool. Rownie przydatne bedzie lepsze poznanie petli. |
|
MrPoxipol |
» 2013-06-21 08:34:18 1. Tworzysz 2 zmienne bool sukces , ale tylko jednej używasz(lokalnej). 2. Porównaj sobie kod funkcji int wczytaj_liczbe() z tym: int wczytaj_liczbe() { int liczba = 0; bool czyOK; do { cin >> liczba; czyOK = cin.good(); if( !czyOK ) { cout << "Wpisano błędną wartość!" << endl << "Podaj liczbe: "; cin.clear(); cin.sync(); } } while( !czyOK ); return liczba; }
|
|
« 1 » |