Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    1

    [C++] Problema switch-case

    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
    codice:
    #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
    codice:
    #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
    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;
    }
    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma che sono tutti questi

    const

    nelle chiamate delle funzioni nel main?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.