Si scriva un programma di gestione di un gattile che legga dall'input un intero "n", quindi per n volte, legga:Un codice id del gatto (un intero);
L'eta del gatto in anni (un intero);
Il peso del gatto in Kg (un float);
Il tipo di cibo assunto dal gatto, espresso come 0 per le crocchette, 1 per le scatolette, 2 per il tonno in scatola.Nello stesso ordine in cui sono stati immessi i dati dei gatti si stampino, uno per linea, i codici id e il tipo di cibo di tutti i gatti che hanno problemi di dieta in giovane eta, ovvero abbiano meno di 4 anni e pesino piu della media dei gatti. accanto al codice id si stampi, separato da uno spazio, il tipo di cibo assunto dal gatto, ovvero crocchette, scatolette oppure tonno.
Ho fatto questo programma:
#include <stdio.h>
#include <stdlib.h>
enum tcibo{
crocchette,
scatolette,
tonno,
};
typedef struct{
int id;
int eta;
float peso;
enum tcibo cibo;;
}gatto;
int main (){
gatto *g;
int n,i;
float s,m;
s=0;
scanf("%d",&n);
g=(gatto*)malloc(n*sizeof(gatto));
for (i=0;i<n;i++){
scanf("%d",&g[i].id);
scanf("%d",&g[i].eta);
scanf("%f",&g[i].peso);
scanf("%d",&g[i].cibo);
s=s+(g[i].peso);
}
m=s/n;
for (i=0;i<n;i++){
if (((g[i].eta)<4)&&((g[i].peso)>m)){
if ((g[i].cibo)==0){ //come migliorare questa parte con "enum"??
printf("%d crocchette\n",g[i].id);
}else if ((g[i].cibo)==1){
printf("%d scatolette\n",g[i].id);
}else if ((g[i].cibo)==2){
printf("%d tonno\n",g[i].id);
}
}
return 0;
}
}
Ma non mi stampa nulla...qualcuno mi puo' aiutare a capire dove sbaglio anche per la parte del printf dove ho scritto il commento??
grazie in anticipo