View Single Post
Old 13-02-2016, 17:06   #3
wickedwonderland
Junior Member
 
Iscritto dal: Feb 2016
Messaggi: 5
Quote:
Originariamente inviato da gianmpu Guarda i messaggi
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);

Ultima modifica di wickedwonderland : 13-02-2016 alle 17:10.
wickedwonderland è offline   Rispondi citando il messaggio o parte di esso