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

Materiały dodatkowe - Funkcje kolejne aspekty - return NaN

Ostatnio zmodyfikowano 2017-05-01 14:36
Autor Wiadomość
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.

C/C++
#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; }


P-160630
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.
P-160633
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 :)

C/C++
#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; }
P-160637
« 1 »
  Strona 1 z 1