Buongiorno,sto avendo difficoltà a fare questo esercizio lasciatomi dal mio professore,potreste aiutarmi?
Il testo è questo:Si supponga di avere un file di input che contiene N persone. Per ogni persona
sono riportati i seguenti parametri(su righe distinte): nome, cognome, età
I dati di una persona sono terminati da una riga vuota.
Nel file, sulla prima riga, è riportato un numero intero che indica il n. di persone
contenute nel file.
Scrivere un programma in grado di:
1 Copiare il contenuto del file in un array di struct
2 L'array deve essere allocato dinamicamente
3 Individuare la persona di maggior età e quella più giovane
Il file che ho creato è strutturato così:
4
Filippo Frasca 39
Antonio Antoci 22
Francesco Filiberto 46
Pietro Pasqua 18
Mentre il programma è questo però quando vado a cercare di indivuare la persona di maggior eta mi da sempre quello più piccolo,
Dove sto sbagliando?
#include <stdio.h>
#include <stdlib.h>
#define max 100
struct info{
int numero;
};
typedef struct info info;
struct persona{
char Nome[max];
char Cognome[max];
int anni;
};
typedef struct persona persona;
int main(){
persona *vett;
FILE* fp;
info n;
int i,massimo,minimo;
fp=fopen("elenco.txt","r");
if(fp==NULL){
printf("Il file non può essere aperto");
}
else
fscanf(fp,"%d\n",&n.numero);
vett=(char*)malloc(n.numero*sizeof(char));
printf("%d\n",n.numero);
//while(!feof(fp)){
for(i=0;i<n.numero;i++){
fscanf(fp,"%s\n",&vett->Nome);
fscanf(fp,"%s\n",&vett->Cognome);
fscanf(fp,"%d\n",&vett->anni);
printf("%s ",vett->Nome);
printf("%s ",vett->Cognome);
printf("%d\n",vett->anni);
//}
}
massimo=0;
minimo=0;
for(i=0;i<n.numero;i++){
if(vett.anni>massimo){
massimo=vett.anni;
}
else if(vett.anni<minimo){
minimo=vett.anni;
}
}
printf("Il piu grande e' %s\n",vett[massimo].Nome);
printf("Il piu piccolo e' %s",vett[minimo].Nome);
}