Problema strutture

di il
1 risposte

Problema strutture

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);


}

1 Risposte

  • Re: Problema strutture

    Usa i tag code per il codice altrimenti non si capisce.

    Comunque tu memorizzi in massimo e minimo il valore dell'età (e lo fai male) e poi usi massimo e minimo come INDICE del vettore ... ovviamente è sbagliato!
Devi accedere o registrarti per scrivere nel forum
1 risposte