Wytłumaczenie polecenia

0

Mam podane zadanie:

Napisz funkcję float mean(int numbers[], int length), która zwraca średnią
arytmetyczną wartości zawartych w tablicy.

Nie do końca wiem czy dobrze rozumiem polecenie
Chodzi o stworzenie funkcji, która z dowolnej tablicy o podanej długości policzy z nich średnią arytmeyczną?

jeśli tak, to w jaki sposób mam się odwołać do tej tablicy przy użyciu tej funkcji

Napisałem na razie taki kod i nie do końca wiem co dalej

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

float mean(int numbers[], int length)
{   int i;
    float x=0;
    for(i=0;i<length;i++)
   {
       x=x+numbers[i];
   }
   return x;
}

int main()
{
 int tab[]={1,2,3,4,5,6,7};


}

1

W C(++), nazwa tablicy to jednocześnie wskaźnik na jej pierwszy element. Zatem u Ciebie poprawne wywołanie tej funkcji to mean(tab, 7).

0

@Althorion:
Próbowałem ją tak wywoływać, ale niestety to nie działa, program nic nie robi i nie wiem czemu

0

Pokaż kod to powiemy

0

std::cout << mean(tab, 7) << std::endl; ?

0

@kq:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

float mean(int numbers[], int length)
{   int i;
   float x=0;
   for(i=0;i<length;i++)
  {
      x=x+numbers[i];
  }
  return x;
}

int main()
{
int tab[]={1,2,3,4,5,6,7};

   mean(tab,7);

}

2

Program liczy sumę (nie średnią) i nic z nią nie robi (np. nie wyświetla). Jakiego efektu się spodziewałeś?

0

@kq: Przepraszam, na razie napisałem tylko sumę , żeby sprawdzić, czy działa, wydawało mi się, że po napisaniu return x, i wywołaniu funkcji w main wyświetli się wartość

zmieniłem kod, Tylko pytanie, czemu nie działa to tak samo jak w przypadku wpisania return x ?

#include<stdio.h>
#include<math.h>
#include<stdlib.h>

float mean(int numbers[], int length)
{   int i;
    float x=0;
    for(i=0;i<length;i++)
   {
       x=x+numbers[i];
   }
   printf("%f",x);
}

int main()
{
 int tab[]={1,2,3,4,5,6,7};

 mean(tab,7);

}

6

Teraz masz wadliwy kod, funkcja nie ma instrukcji return i zamiast zwrócić wartość wypisuje coś na ekran.

Zadaj sobie pytanie, co chciałbyś aby funkcja licząca sinus robiła? Np.

double x = sin(pi/2);

Czy wolałbyś aby do x została przypisana właściwa wartość, czy aby został przypisany jakiś śmieć, ale za to program wypisał "sin ist 1" (bo akurat programista był Niemcem)?

4

Bo return zwrot wartości z funkcji, z czym możesz sobie zrobić co zechcesz i nader niewygodne by było, gdyby zawsze to miało lecieć na standardowe wyjście…

5

Bo return zwraca wartość funkcji. Nie masz żadnego kodu w pierwotnym rozwiązaniu, który by coś robił z tą zwrotką.

Z poprzednim kodem to powinno być: printf("%f", mean(tab, 7));

I to jest też lepsza droga, bo oddzielasz obliczenia od wypisywania ich na ekran. W tak krótkim kodzie to nie ma większego znaczenia, ale generalnie to jest dobra praktyka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1