Salve a tutti!
All'interno di questo progetto si ha la possibilità di creare un Archivio di Studenti ed interagirci tramite un menù appositamente creato nel Main, ma è quest'ultimo che mi crea problemi. Ho compilato separatamente Archivio.cpp e Archivio.h e quando provo a compilare MainArchivio.cpp mi esce lo stesso errore per tutte le righe dei case:
expected primary-expression before ' ' token
ecco i codici:
Archivio.h : Definizioni
Archivio.cpp : Funzionicodice:#ifndef _ARCHIVIO_H #define _ARCHIVIO_H #include <iostream> #include <cstring> using namespace std; const int DIMS=30; int num_entry=0; typedef struct Studente { int matricola; char nome[DIMS]; int numeroEsami; }; typedef Studente * Archivio; Archivio crea_archivio(Archivio, int); Studente crea_record(Studente); Archivio inserisci_record(Archivio, int); int ricerca_record (const Archivio, const int); void stampa_dati (const Archivio, const int); void stampa_archivio (const Archivio); void distruggi_archivio(Archivio); #endif
MainArchivio.cpp : Maincodice:#include "Archivio.h" Archivio crea_archivio(Archivio A, int n){ A = new Studente[n]; cout << "\nCreato nuovo Archivio Studenti di capienza " << n <<"."; return A; } Studente crea_record(Studente S){ cout << "\nMatricola: "; cin >> S.matricola; cout << "\nNome (max30 caratteri): "; cin >> S.nome; cout << "\nNumero Esami: "; cin >> S.numeroEsami; return S; } Archivio inserisci_record(Archivio A, int n){ if (num_entry==n){ cout<<"\nERRORE! Archivio pieno. Terminazione programma...\n"; exit(0); } cout << "\nSto creando lo Studente..."; Studente S; crea_record(S); A[num_entry].matricola=S.matricola; strcpy(A[num_entry].nome,S.nome); A[num_entry].numeroEsami=S.numeroEsami; cout << "\nStudente inserito con successo nell'Archivio."; num_entry++; } int ricerca_record (const Archivio A/*, const int num_entry*/){ if (num_entry==0){ cout<<"\nERRORE! Archivio vuoto. Terminazione programma...\n"; exit(0); } bool trovato=false; int target; int i=0; cout << "\nMatricola da ricercare: "; cin >> target; while (!trovato && i<num_entry){ if (A[i].matricola==target) return i++; else (i++); } if (!trovato) return 0; } void stampa_dati (const Archivio A, const int p){ cout << "\nDati Studente posizione" << p+1 << ":\n"; cout << A[p].matricola << "\t" << A[p].nome << "\t" << A[p].numeroEsami; } void stampa_archivio (const Archivio A){ cout << "\nStampa dati archivio..."; for (int i=0; i<num_entry; i++) stampa_dati(A,i); } void distruggi_archivio(Archivio A){ delete [] A; A = NULL; cout << "\nArchivio distrutto con successo.\n"; }
gli errori sono i seguenti (tutti in MainArchivio.cpp)codice:#include <cstdlib> #include <iostream> #include "Archivio.h" using namespace std; int main(int argc, char *argv[]){ int scelta,n,position,sposition,esci=0; Archivio A; do { do { // stampa il menu' delle operazioni previste cout<<"\n---------Menu Archivio---------\n"; cout<<"\n1) Creazione dell’archivio\n "; cout<<"\n2) Inserimento di uno studente nell’archivio\n "; cout<<"\n3) Ricerca di uno studente nell’archivio\n "; cout<<"\n4) Stampa dell’archivio\n "; cout<<"\n5) Stampa dati studente\n "; cout<<"\n6) Distruzione dell’archivio\n "; cout<<"\n7) Fine\n "; cout<<"\n Inserisci una opzione: "; cin>>scelta; cout << "\n"; } while ((scelta<1)||(scelta>7)); switch (scelta) { case (1): cout << "\nCapienza Archivio?: "; cin >> n; crea_archivio(Archivio A, int n);break; case (2): inserisci_record(Archivio A, int n);break; case (3): position=ricerca_record(const Archivio A/*, const int num_entry*/); if (position==0) cout << "\nElemento non presente nell'Archivio."; else cout << "\nElemento presente in posizione" << position <<"."; break; case (4): stampa_archivio (const Archivio A);break; case (5): cout << "\nPosizione Studente da stampare: "; cin >> sposition; sposition--; stampa_dati (const Archivio A, const int sposition);break; case (6): distruggi_archivio(Archivio A);break; case (7): esci=1;break; default: cout << "\n opzione errata!"; } cout << "\n"; system("PAUSE"); system("CLS"); } while (!esci); return 0; system("PAUSE"); return EXIT_SUCCESS; }
In function `int main(int, char**)':
78 expected primary-expression before "A"
78 expected primary-expression before "int"
79 expected primary-expression before "A"
79 expected primary-expression before "int"
81 expected primary-expression before "const"
86 expected primary-expression before "const"
91 expected primary-expression before "const"
91 expected primary-expression before "const"
92 expected primary-expression before "A"
Makefile.win [Build Error] [MainArchivio.o] Error 1
In cosa sto sbagliando nell'usare lo switch/case? come faccio a riparare il tutto?
Thank you in advance

Rispondi quotando