PDA

Visualizza la versione completa : [C++] enum programma base


Pimo
10-01-2008, 17:10
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);
}

MItaly
10-01-2008, 17:34
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ė:


#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:


#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;
}
.

Pimo
10-01-2008, 22:09
grazie mille!

MItaly
10-01-2008, 23:01
Prego; ciao! :ciauz:

Loading