Witam,
przychodzę z konkretnym zapytaniem, gdyż mam problem z jedną kwestią. Zacząłem realizować zadania ukazane w załączniku i oto efekt mojej pracy:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 30
typedef int tablica[N];
void wypelnienie(tablica array)
{
srand(time(0));
int i;
for(i=0; i<N; i++)
array[i]=-100+rand()%201;
}
void wyswietlanie(tablica array)
{
unsigned int i;
for(i=0; i<N; i++)
printf("%d\n",array[i]);
}
double srednia(tablica array)
{
double srednia, suma;
unsigned int i;
suma=0;
srednia=0;
for(i=0;i<N;i++)
suma=suma+array[i];
srednia=suma/N;
return srednia;
}
double odchylenie(tablica array)
{
double srednia, suma, wariancja, odchylenie;
unsigned int i;
suma=0;
for(i=0;i<N;i++)
suma=suma+array[i];
srednia=suma/N;
for(i=0, suma=0; i<N; i++)
suma += pow( array[i] - srednia, 2);
wariancja= suma/N;
odchylenie=sqrt(wariancja);
return odchylenie;
}
int znajdz_min(tablica array)
{
int min;
unsigned int i;
min=array[0];
for(i=0; i<N; i++)
if(min>array[i])
min=array[i];
return min;
}
int znajdz_max(tablica array)
{
int max;
unsigned int i;
max=array[0];
for(i=0; i<N; i++)
if(max<array[i])
max=array[i];
return max;
}
int main(){
tablica liczby;
wypelnienie(liczby);
printf("Wartosci tablicy:\n");
wyswietlanie(liczby);
printf("\nSrednia wartosci tablicy: %lf\n",srednia(liczby));
printf("\nOdchylenie standardowe: %lf\n",odchylenie(liczby));
printf("\nWartosc minimalna tablicy: %d\n",znajdz_min(liczby));
printf("\nWartosc maksymalna tablicy: %d\n",znajdz_max(liczby));
return 0;
}
Zadaniem było również aby każda czynność była realizowana osobną funkcją co też zrobiłem, więc można powiedzieć że w zasadzie wszystko gra, poza jedną rzeczą. Mianowicie w funkcji która liczy odchylenie standardowe (zad2) średnia elementów tablicy która między innymi jest potrzebna do jego obliczenia jest realizowana kolejny raz, gdyż istnieje już funkcja która liczy tą średnią i ją zwraca i tutaj właśnie jest moje pytanie. W jaki sposób zrobić tak, aby funkcja licząca odchylenie pobierała wartość średniej od funkcji srednia i z nią wykonywała dalsze obliczenia zamiast liczyć ją po raz kolejny? Próbowałem to jakoś zrozumieć ale za każdym razem mi nie wychodzi, wobec tego postanowiłem zapytać tutaj, czy ktoś mógł by przerobić to, w taki sposób jaki opisałem i wytłumaczyć mi na tym konkretnym przykładzie dlaczego trzeba to zrobić tak a nie inaczej? Był bym bardzo wdzięczny.