/*Esercizio esame fondamenti 1 consorzio nettuno 7 aprile 2001  Marco Temperini*/

#include <stdio.h>
#define N 7


/*restituisce come risultato la media dei valori di arr;
inoltre, nella locazione puntata da diff mette la differenza tra
i valori massimo e minimo dell'array*/

float  media( int arr[], int * diff)
{
int  i, som, max, min; /* usa som per calcolare la somma delle componenti
di arr; max e min sono usati per contenere il massimo e minimo parziale durante la scansione
(e alla fine il massimo e il minimo in arr) */

som=max=min=arr[0];
/* inizializzazione */

for  (i=1; i<N; i++)
/* si scandisce l'array...*/
 {
 som+=arr[i];
/* ...accumulando le componenti in som, */
  if  (max<arr[i]) max=arr[i];
/* mantenendo aggiornato il massimo parziale,*/
   if  (min>arr[i]) min=arr[i];
/* e il minimo parziale */
 }

/* al termine del ciclo, in min c'e' il minimo, in max, il massimo e in som
la somma delle componenti di arr */

*diff = max-min;
/* assegnazione argomento con la differenza */
return (( float )som/N);
/* restituzione risultato (media) e terminazione */
}
/*fine media*/


int  main()
{
int  a[N]={32, 24, 56, 29, 25, 38, 33}, differenza, i;
char car;
printf("\ninizio programma\n");
printf("componenti dell'array:\n");
for  (i=0;i<N;i++) printf("%d, ",a[i]);
 printf("\n-----------------------------------------\n");
 printf("media dei valori: %f\n", media(a,&differenza));
 printf("-----------------------------------------\n");
 printf("la differenza tra il massimo e il minimo e' %d;\n", differenza);
 printf("i valori superiori alla differenza sono:\n");
for (i=0;i<N;i++)  if (a[i]>differenza) printf("%d ",a[i]);
 scanf("\n%c",&car);
return  0;
}


return to programmi