Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Pimo
    Registrato dal
    Jan 2008
    Messaggi
    5

    [C++] enum programma base

    mi sono inventato un "esercizio" è possibile farlo? Mi da errori al momento della compilazione, potete aiutarmi?

    /*
    inserire un mese in ingresso e restituisce in uscita il numero corrispondente:
    esempio gennaio 1, febbraio 2, etc
    */
    #include <iostream>
    using namespace std;

    int main()
    { enum mese {
    gennaio,
    febbraio,
    marzo,
    aprile,
    maggio,
    giugno,
    luglio,
    agosto,
    settembre,
    ottobre,
    novembre,
    dicembre
    };
    cout<<"inserisci il mese sottoforma letterale"<<endl;
    char c[20];
    cin>>c;
    mese=c;
    cout<<1+mese<<endl;
    system("PAUSE");
    return (0);
    }

  2. #2
    I nomi contenuti in un enum sono simboli esistenti solo al momento della compilazione, non puoi convertire automaticamente una stringa in un enum. Di norma per fare questo si fa così:
    codice:
    #include <iostream>
    using namespace std;
    enum inutile
    {
        cactus,
        macachi,
        cannibali,
        Alcibiade
    };
    
    int main()
    {
        char buf[256];
        inutile i;
        cin>>buf;
        if(strcmp(buf,"cactus")==0)
            i=cactus;
        else if(strcmp(buf,"macachi")==0)
            i=macachi;
        else if(strcmp(buf,"cannibali")==0)
            i=cannibali;
        else if(strcmp(buf,"Alcibiade")==0)
            i=Alcibiade;
        else
            cout<<"Scelta non valida"<<endl;
        //...
        return 0;
    }
    ma volendo ti puoi aiutare un pochino con una macro:
    codice:
    #define STR2ENUMIF(stringvar,enumvar,enumval) if(strcmp(stringvar,#enumval)==0) enumvar=enumval;
    #include <iostream>
    using namespace std;
    enum inutile
    {
        cactus,
        macachi,
        cannibali,
        Alcibiade
    };
    
    int main()
    {
        char buf[256];
        inutile i;
        cin>>buf;
        STR2ENUMIF(buf,i,cactus)
        else STR2ENUMIF(buf,i,macachi)
        else STR2ENUMIF(buf,i,cannibali)
        else STR2ENUMIF(buf,i,Alcibiade)
        else
            cout<<"Scelta non valida"<<endl;
        //...
        return 0;
    }
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di Pimo
    Registrato dal
    Jan 2008
    Messaggi
    5
    grazie mille!

  4. #4
    Prego; ciao!
    Amaro C++, il gusto pieno dell'undefined behavior.

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.