Materiały dodatkowe - Funkcje kolejne aspekty - return NaN
Ostatnio zmodyfikowano 2017-05-01 14:36
roksana Temat założony przez niniejszego użytkownika |
Materiały dodatkowe - Funkcje kolejne aspekty - return NaN » 2017-04-30 21:35:19 Jeszcze nie skończyłam tego zadania ponieważ zacięłam się na jednej rzeczy. Mianowicie funkcja uparcie zwraca mi "nan". Próbowałam już zrobić o na kilka sposobów, ale żaden nie zadziałał prawidłowo. Gdy dzielenie wykonam w środku funkcji i umieszczę w niej cout << suma/ile to wypisuje wynik prawidłowy. Nie mam pojęcia gdzie jest błąd proszę o pomoc. #include <iostream> #include <string>
using namespace std;
float pobierzliczbe( float suma, float ile ) { float liczba = 0; cin >> liczba; if( liczba != 0 ) { ile++; suma += liczba; pobierzliczbe( suma, ile ); } else return suma / ile; }
int main() { float ile = 0; float suma = 0; cout << "Twoja srednia ocen to : " << pobierzliczbe( suma, ile ) << endl; return 0; } |
|
Luq |
» 2017-04-30 23:00:06 Jeśli przy pierwszym wywołaniu funkcji wpiszesz 0, to masz dzielenie przez 0. W przeciwnym przypadku if jest spełniony i funkcja nie trafia na return, więc zwróci jakąś przypadkową wartość. Dodaj return przy wywołaniu rekurencyjnym. |
|
roksana Temat założony przez niniejszego użytkownika |
» 2017-05-01 14:36:36 Teraz działa dzięki wielkie za pomoc :) Poniżej wklejam gdyby ktoś był zainteresowany :) Pozdrawiam :) #include <iostream> #include <string>
using namespace std;
float pobierzliczbe( float suma, float ile ) { float liczba = 0; cin >> liczba; if( liczba != 0 ) { ile++; suma += liczba; return pobierzliczbe( suma, ile ); } else { return suma / ile; } }
int main() { float ile = 0; float suma = 0; cout << "Twoja srednia ocen to : " << pobierzliczbe( suma, ile ) << endl; return 0; } |
|
« 1 » |