Questo è quello che ho partorito..ma la media restituita è 0.000000codice:#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; }
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
e quest'altro?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; }
Il secondo è lecito?codice:int main () { int arr[N]={3, 3, 2, 7, 2}; printf("\nLa media e' %lf\n", average(arr[N], N)); return 0; }
P.S:
Intendi nel momento in cui dichiaro e definisco la funzione? Quindi è da fare solo quando la invoco?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.

Rispondi quotando