Quote:
Originariamente inviato da gianmpu
Benvenuto nel forum di hwupgrade.
Come in molti ti diranno, è vietato da regolamento chiedere la soluzione di esercizi.
E' permesso invece correggere eventuali errori nel codice che tu hai scritto finora dopo che lo avrai postahttp://www.hwupgrade.it/forum/newreply.php?do=newreply&p=43373659to. 
|
chiedevo la risoluzione da zero proprio perchè non so lavorare con le struct concatenate, quindi il mio codice sarebbe stato inesistente. non è un esercizio assegnato e non ne traggo vantaggio dalla corretta risoluzione, era solo a scopo di apprendimento. ma se questo è il regolamento, mi ci attengo

.
ho provato a trascrivere i dati dal file ad un array di strutture, un po più macchinoso, ma che dovrebbe fare il suo lavoro, in questo modo :
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//definisco la struttura per salvare i biglietti
struct biglietto{
int codice;
int gg;
int mm;
int aa;
int h;
int m;
char sala;
int dimensione;
};
//funzione che calcola il numero di biglietti totali
int ContaLinee(FILE *f) {
char ch;
int linee = 0;
while(!feof(f)){
if ((ch = getc(f)) == '\n')
linee++;
}
return linee;
}
//funzione che legge i biglietti dal file e li copia nella struct
void LeggiBiglietto(FILE *f, struct biglietto *b, int NumB) {
int i;
for (i=0; i < NumB; i++){
fscanf(f,"%d %d-%d-%d %d:%d %c %d", &b[i].codice, &b[i].gg, &b[i].mm, &b[i].aa, &b[i].h, &b[i].m, &b[i].sala, &b[i].dimensione);
}
}
//main
int main(int argc, char **argv) {
FILE *f;
f = fopen(argv[1],"r");
int NumB;
NumB = ContaLinee(f);
printf("il numero di biglietti emessi è : %d \n", NumB);
struct biglietto *b[NumB];
LeggiBiglietto(f, b[NumB], NumB);
int i;
for (i = 0; i < NumB; i++ ) {
printf("il codice è : %d \n", b[i].codice);
printf("la data è : %d-%d-%d \n", b[i].gg, b[i].mm, b[i].aa);
printf("l'orario di inizio è : %d:%d \n", b[i].h, b[i].m);
printf("la sala è : %c \n", b[i].sala);
printf("il film è in %dD \n", b[i].dimensione);
}
}
sfortunatamente non compila dandomi questo errore di cui non riesco a venirne a capo:
Codice:
esercizio.c:60:38: error: request for member ‘codice’ in something not a structure or union
printf("il codice è : %d \n", b[i].codice);
^
esercizio.c:61:42: error: request for member ‘gg’ in something not a structure or union
printf("la data è : %d-%d-%d \n", b[i].gg, b[i].mm, b[i].aa);
^
esercizio.c:61:51: error: request for member ‘mm’ in something not a structure or union
printf("la data è : %d-%d-%d \n", b[i].gg, b[i].mm, b[i].aa);
^
esercizio.c:61:60: error: request for member ‘aa’ in something not a structure or union
printf("la data è : %d-%d-%d \n", b[i].gg, b[i].mm, b[i].aa);
^
esercizio.c:62:50: error: request for member ‘h’ in something not a structure or union
printf("l'orario di inizio è : %d:%d \n", b[i].h, b[i].m);
^
esercizio.c:62:58: error: request for member ‘m’ in something not a structure or union
printf("l'orario di inizio è : %d:%d \n", b[i].h, b[i].m);
^
esercizio.c:63:36: error: request for member ‘sala’ in something not a structure or union
printf("la sala è : %c \n", b[i].sala);
^
esercizio.c:64:38: error: request for member ‘dimensione’ in something not a structure or union
printf("il film è in %dD \n", b[i].dimensione);