Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [c++] Uso Enum con il ciclo switch

    Ciao ragazzi potete aiutarmi a capire come funziona l'enum nel ciclo switch??
    Con l'enum io diciamo creo una nuova variabile che può assumere soltanto i valori che decido io ma poi come faccio ad usarla nei case dello switch? Prendendo un esempio del semaforo io scrivo:

    codice:
    #include <iostream>
    using namespace std;
    
    
    int main()
    {  
         int luce;
       enum luce {
            Rosso=0,
            Verde=1,
            Giallo=2
            };
            
      
        
       cout<<"Inserisci colori: \n";
       cin>>luce;
       
          switch(luce) {
            case Rosso:
                 cout<<"STOP. \n";    
                 break;
            case Verde:
                 cout<<"continua. \n";
                 break;
            case Giallo:
                 cout<<"preparati allo stop. \n";
                 break;
                 }                  
                    
                    
                    
        
    system ("PAUSE");
    return 0;
    }

    quando nel comando di cin inserisco i vari colori il programma non va, cosa sbaglio? Grazie.

  2. #2
    Devi inserire i numeri per come hai scritto tu l'enum, essendo esso un intero! se scrivi 0 ti riferisci a rosso, ecc...
    capito? per come vuoi far tu, cambia il tipo in string, inverti i numeri con le parole e andrà

  3. #3
    Originariamente inviato da celtico94
    Devi inserire i numeri per come hai scritto tu l'enum, essendo esso un intero! se scrivi 0 ti riferisci a rosso, ecc...
    capito? per come vuoi far tu, cambia il tipo in string, inverti i numeri con le parole e andrà
    e come si invertono i numeri in stringa?

  4. #4
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Per il compilatore il tipo enum luce è una variabile che può assumere i valori 0,1 o 2.
    Rispettivamente intercambiabili con Rosso,Verde e Giallo.
    Questo è ciò che è valido per il compilatore, trattala come se fosse una variabile qualsiasi, con la differenza che ha come dominio {0,1,2}.
    Non esiste che il programma capisce in maniera automatica come stampare una variabile di tipo luce.Non sa come stamparla, non è un umano e non sa che se ha valore 0 (oppure valore Rosso), deve stampare la stringa "Rosso", Rosso a compile-time è soltanto un' etichetta che identifica il valore zero per enum luce.
    Quindi puoi definire tu un operatore:

    codice:
    ostream& operator<< (ostream& os, const luce& l)
    {
        switch(l)
        {
            case Rosso:
                os << "Rosso";
                break;
            case Verde:
                os << "Verde";
                break;
            case Giallo:
               os << "Giallo";
        }
        return os;
    }

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.