codice:
#include<stdio.h>
#define N 5
double average(int arr[], int n);
int main ()
{
int arr[N]={3, 3, 2, 7, 2};
int a;
a=average(arr[N], N);
printf("\nLa media e' %lf\n", a);
return 0;
}
double average(int arr[], int n)
{
int i, j;
int flag;
int sum;
double avg;
flag=0;
for(i=0; i<n; i++) {
for(j=i+1; j<n; j++) {
if(arr[i]==arr[j])
arr[j]=0;
else
flag=0;
}
}
for(i=0; i<n; i++) {
sum+=arr[i];
}
return avg=sum/n;
}
Questo è quello che ho partorito..ma la media restituita è 0.000000
Ho sbagliato ancora qualcosa nella dichiarazione e/o nella chiamata alla funzione?
Oppure è sbagliato l'algoritmo che dovrebbe fare la media?
Un'altra domanda: cosa cambia tra questo pezzo di codice
codice:
int main ()
{
int arr[N]={3, 3, 2, 7, 2};
int a;
a=average(arr[N], N);
printf("\nLa media e' %lf\n", a);
return 0;
}
e quest'altro?
codice:
int main ()
{
int arr[N]={3, 3, 2, 7, 2};
printf("\nLa media e' %lf\n", average(arr[N], N));
return 0;
}
Il secondo è lecito?
P.S:
Nota che in ogni caso non è necessario specificare le dimensioni dell'array passato come parametro - per quanto riguarda gli array monodimensionali, questi sono comunque passati come un puntatore, ignorando le dimensioni che specifichi.
Intendi nel momento in cui dichiaro e definisco la funzione? Quindi è da fare solo quando la invoco?