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
#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
Archivio.cpp : Funzioni
#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";
}
MainArchivio.cpp : Main
#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;
}
gli errori sono i seguenti (tutti in MainArchivio.cpp)
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