Testo dell'esercizio
Sia dato un vettore contenente i nomi di diversi tipi di volatili e una matrice contenente, per ogni tipo di volatile, il numero di uova deposte da ognuna delle 10 femmine che sono state messe sotto osservazione.
Scrivere un programma che, dopo aver caricato i dati, presenti un menu' con opzioni corrispondenti alle seguenti richieste:
1) stampa del tipo di volatile che ha deposto il minimo numero di uova sulle dieci covate;
2) stampa di quanti volatili hanno deposto un numero medio di uova che risulta maggiore e minore alla media delle uova deposte da tutti i volatili presi in osservazione.
mostra soluzione
/*
CLAUDIO CARDINALE III AI
Sia dato un vettore contenente i nomi di diversi tipi di volatili e una matrice contenente, per ogni tipo di volatile, il numero di uova deposte da ognuna delle 10 femmine che sono state messe sotto osservazione.
Scrivere un programma che, dopo aver caricato i dati, presenti un menu' con opzioni corrispondenti alle seguenti richieste:
1) stampa del tipo di volatile che ha deposto il minimo numero di uova sulle dieci covate;
2) stampa di quanti volatili hanno deposto un numero medio di uova che risulta maggiore e minore alla media delle uova deposte da tutti i volatili presi in osservazione.
*/
#include<stdio.h>
#define MAX 1000
#define F 10
int main(){
//dichiarazioni
int r,j,i,mat[MAX][10],somma[MAX],pos_min=0,mag=0,min=0;
char volatili[MAX][MAX];
float media=0;
//acquisizione dati
//lunghezza matrice
do{
printf("inserire il numero dei tipi di volatili : ");
scanf("%d",&r);
}while(r<1 || r>=MAX);
//acquisizione dati
for(i=0;i<r;i++){
printf("inserire il tipo di volatile numero %d : ",i+1);
getchar();
scanf("%s",volatili[i]);
}
for(i=0;i<r;i++)
for(j=0;j<F;j++){
printf("inserire il numero di uova prodotte dalla femmina numero %d ed del tipo %s : ",j+1,volatili[i]);
scanf("%d",&mat[i][j]);
}
//calcoli
//1°
/*for(i=0;i<r;i++){
for(j=0;j<F;j++)
printf("%d ",mat[i][j]);
printf("\n");
}*/
for(i=0;i<r;i++){
somma[i] = 0;
for(j=0;j<F;j++)
somma[i] += mat[i][j];
}
for(i=0;i<r;i++)
if(somma[i]<somma[pos_min])
pos_min = i;
//2°
for(i=0;i<r;i++)
media += somma[i];
media/=r*F;
for(i=0;i<r;i++){
if(((float)somma[i]/F)>media)
mag++;
else
min++;
//printf("%d - %f - %f\n",i,media,(float)somma[i]/F);
}
//visualizzazione risultati
printf("il tipo di volatile che ha deposto meno uova e` %s, mentre il numero di tipi di volatili che hanno deposto piu` uova della media e` %d ed quello di quelli che ne hanno deposte di meno e` %d\n",volatili[pos_min],mag,min);
}
Testi Consigliati:
Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line
C guida alla programmazione: Conoscere lo standard C11 dalle basi del linguaggio alle direttive del preprocessore (Programmare con C Vol. 1)
Programmazione in C
torna