[C++] Programma istruzione SWITCH

di il
7 risposte

[C++] Programma istruzione SWITCH

Ciao raga, sto provando a fare un programmino che inserendo il giorno della settimana mi dice l'orario scolastico...ho provato con il costrutto switch però ho dei dubbi...questo è il codice:
int main(){
	int giorno;
	
		cout<<"Orario scolastico."<<endl;
		cout<<"Di quale giorno vuoi vedere l'orario?"<<endl;
		cout<<"1. Lunedi"<<endl;
		cout<<"2. Martedi"<<endl;
		cin>>giorno;
		switch (giorno){ 																				
			case '1':
                          cout<<"orario lunedi"<<endl;
                          break;
                        case '2':
                           cout<<"orario martedi"<<endl;
                          break;
                        default:
                           cout<<"Non c'è scuola"<<endl;
                        break;
                    }
se lo compilo così funziona e va bene...però il mio dubbio era: Invece di inserire i numeri associati al giorno è possibile inserire proprio il giorno, ad esempio scrivere LUNEDI e poi ricevere in stampa l'orario del lunedì???

ho provato a farlo così:
int main(){
	char giorno;
	
		cout<<"Orario scolastico."<<endl;
		cout<<"Di quale giorno vuoi vedere l'orario?"<<endl;
		cout<<"lunedi"<<endl;
		cout<<"martedi"<<endl;
		cin>>giorno;
		switch (giorno){ 																				
			case lunedi:
                          cout<<"orario lunedi"<<endl;
                          break;
                        case martedi:
                           cout<<"orario martedi"<<endl;
                          break;
                        default:
                           cout<<"Non c'è scuola"<<endl;
                        break;
                    }
in questo modo il programma non va...cosa sbaglio??? anche se dichiaro le risposte lunedi e martedi, non me lo compila...come mai?? grazie

7 Risposte

  • Re: [C++] Programma istruzione SWITCH

    Lo switch funziona solo su costanti e una stringa non è una costante. Si può fare ciò che chiedi ma è oltre alle tue capacità per il momento (almeno credo guardando il tuo codice). Dovresti utilizzare una mappa che trasforma una stringa in un int.Una cosa del tipo
    
    std::map<std::string, int> giornoInIntero;
    
    giornoInIntero["lunedi"] = 1;
    giornoInIntero["martedi"] = 2;
    .....
    
    std::string giorno = "lunedi";
    
    std::map<std::string,int>::iterator it = giornoInIntero.find(giorno);
    if(it != giornoInIntero.end())
    {
        switch(it->second)
        {
            case 1: ..... break;
            case 2: ..... break;
            .......................
        }
    }
    
  • Re: [C++] Programma istruzione SWITCH

    Mmmm no non so ancora cosa sia una mappa :S ho provato con l'enum però mi da un errore nella dichiarazione della variabile
  • Re: [C++] Programma istruzione SWITCH

    Sai cos'è una struttura?
  • Re: [C++] Programma istruzione SWITCH

    No...allora per semplicità ti dico fin dove sono arrivato, ho studiato le variabili, come si dichiarano ecc., i comandi di cin cout, operatori, casting e i controlli di flusso, if, if..else, switch, while ecc. e basta...e un po l'enum x cercare di fare questo programmino XD
  • Re: [C++] Programma istruzione SWITCH

    Allora devi andare avanti con if-else finche non impari altro.
    
    if(giorno == "lunedi")
    {
    }
    else if(giorno == "martedi")
    {
    }
    else .....
    
    
  • Re: [C++] Programma istruzione SWITCH

    Ok grazie...quindi il costrutto switch al momento posso usarlo solo con gli interi? i caratteri no?
  • Re: [C++] Programma istruzione SWITCH

    I caratteri pure, ma non con cose complesse come le stringhe.
Devi accedere o registrarti per scrivere nel forum
7 risposte