[C] Problema con la compilazione
Ciao ragazzi, potreste dirmi perchè non riesco a compilare il mio programma? Vi posto il codice:
Il primo problema che il compilatore mi pone è il seguente : " In function int main(): expected } at end of input", ma non mi risulta che manchi la parentesi che chiuda il blocco del main()
Nel caso in cui aggiungessi questa parentesi, e solo in questo caso, il compilatore trova questo tipo di errore: "In function main: [Linker error] undefined reference to acquisisci(prenotazione*, int) ld returned 1 exit status" .
Potreste darmi una mano per trovare una soluzione? Vi ringrazio in anticipo.
#include <stdio.h> #include <stdlib.h> #define DIM 13 struct prenotazione { int ora; int matricola; }; void acquisisci(struct prenotazione *v, int i); int main() { struct prenotazione v[DIM]; int i=0, ris, scelta; int selezione=0; printf("prenotazioni disponibili dalle 8:00 alle 20:00\n\n"); do{ printf("\n1 - Inserisci prenotazione"); printf("\n2 - Cancella prenotazione"); printf("\n3 - Visualizza le prenotazioni effettuate"); printf("\n4 - Salva sul file le prenotazioni effettuate"); printf("\n5 - Exit\n"); scanf("%d", &selezione); }while ( selezione < 1 || selezione > 5 ); return selezione; scelta=selezione; switch(scelta) { case(1): do{ acquisisci(v, i); i++; printf("\n\nSi vuole inserire un' altra prenotazione? se si premere 1, altrimenti 0: "); scanf("%d", &ris); }while(ris!=0); break; case(2): ; case(3): printf("\n\nStampa delle prenotazioni inserite: \n\n"); for(i=0; i<DIM; i++){ printf("\nora: %d", v[i].ora); printf("\nmatricola: %d\n\n", v[i].matricola); } break; case(4): ; } system("PAUSE"); return 0; } void acquisisci(struct prenotazione *v, int i) { if(i<DIM){ printf("\nInserimento %d prenotazione...\n\n", i+1); printf("ora: "); scanf("%d", &v[i].ora); printf("\nmatricola: "); scanf("%d", &v[i].matricola); } else{ printf("\nImpossibile inserire prenotazione, orari occupati "); } }
Il primo problema che il compilatore mi pone è il seguente : " In function int main(): expected } at end of input", ma non mi risulta che manchi la parentesi che chiuda il blocco del main()

Nel caso in cui aggiungessi questa parentesi, e solo in questo caso, il compilatore trova questo tipo di errore: "In function main: [Linker error] undefined reference to acquisisci(prenotazione*, int) ld returned 1 exit status" .
Potreste darmi una mano per trovare una soluzione? Vi ringrazio in anticipo.
Risposte
Chiudi questo ciclo for() da qualche parte:
(Presumibilmente dopo il secondo printf()..? Vedi tu.)
case(3): printf("\n\nStampa delle prenotazioni inserite: \n\n"); for(i=0; i<DIM; i++){ printf("\nora: %d", v[i].ora); printf("\nmatricola: %d\n\n", v[i].matricola); break;
(Presumibilmente dopo il secondo printf()..? Vedi tu.)
"Rggb":
Chiudi questo ciclo for() da qualche parte:
case(3): printf("\n\nStampa delle prenotazioni inserite: \n\n"); for(i=0; i<DIM; i++){ printf("\nora: %d", v[i].ora); printf("\nmatricola: %d\n\n", v[i].matricola); break;
(Presumibilmente dopo il secondo printf()..? Vedi tu.)
Ti ringrazio, mi era sfuggita la mancanza in questo ciclo.
Ho modificato il codice apportando alcune modifiche. Ora non capisco perchè quando, nel menù, scelgo ad esempio l'opzione "1", esce direttamente dal programma. Ho sbagliato qualcosa nello "switch"?
Il che mi sembra anche strano perchè il procedimento che ho utilizzato è simile ad un altro programmino che funziona normalmente.
Certo, c'è un return subito dopo la scelta, quindi ritorna (dal main) ed esce.

"Rggb":
Certo, c'è un return subito dopo la scelta, quindi ritorna (dal main) ed esce.
Perfetto ho risolto, gentilissimo
