Salve ragazzi, vorrei una mano in quanto il mese prossimo ho l'esame di programmazione e, non avendo seguito il corso, in prima istanza è forse meglio chiedere consiglio a qualcuno più esperto =)
Il testo da analizzare è il seguente:
Si supponga che in un file di testo siano presenti i guadagni di alcuni alberghi organizzati nel
seguente modo: sul ciascun rigo è presente il nome di un albergo seguito dal carattere ';', poi il numero
di clienti ospitati ed infine i pagamenti di ciascun cliente separati da uno o più spazi. Un possibile
esempio è il seguente:
Hotel Belvedere; 3 60 70 60
Hotel Vesuvio; 2 120 130
Hotel Miramare; 4 120 130 60 150
Scrivere una procedura che legga da tale file e stampi a video il nome dell'albergo che ha guadagnato di
più.
Il mio svolgimento è il seguente:
#include<stdio.h>
#include<stdlib.h>
typedef struct dati{
char n_a[20];
int n_c;
float acq[7];
} hotel;
void leggi_hotel(hotel *p,int n_l);
void max_prx(hotel *p, float *tot,int n_l);
int main(){
hotel *p;
int n_l;
float tot[n_l];
leggi_hotel(p,n_l);
max_prx(p,tot,n_l);
system("PAUSE");
}
void leggi_hotel(hotel *p, int n_l){
char nomefile[20],c;
int i,j;
FILE *f;
n_l=0;
printf("Inserisci il nome del file");
scanf("s",nomefile);
f=fopen(nomefile,"r");
if(f==NULL)
printf("Impossibile aprire il file");
else{
while(c=getchar()!=EOF)
if (c=='\n')
n_l++;
}
p=(hotel*)malloc(n_l*sizeof(hotel));
for(i=0;i<n_l;i++){
while(c=getchar()!=';')
fscanf(f,"%s",&p[i].n_a);
for(c=getchar()==';';c=getchar()=='/n';)
fscanf(f,"%d",&p[i].n_c);
for(j=0;j<p[i].n_c;j++)
fscanf(f,"f",&p[i].acq[j]);
}
}
void max_prx(hotel *p, float *tot,int n_l){
int i,j, indice;
float maxi=0;
for (i=0;i<n_l;i++){
for(j=0;j<p[i].n_c;j++){
tot[i]+=p[i].acq[j];
}
}
maxi=tot[0];
for(i=0;i<n_l;i++)
if(maxi<tot[i]){
maxi=tot[i];
i=indice;
}
printf("L'hotel dei nababbi è il %s con %f",p[indice].n_a,maxi);
}
Alcuni vettori hanno dimensione fissa in quanto, esplicando una variabile come dimensione, non so perché il compilatore mi dava errore!
Il problema che sorge non è in fase di compilazione, ma in esecuzione mi da Core Dump.
Ringrazio anticipatamente per un eventuale aiuto =) =)