Título: Ayuda para guardar como char o como int
Publicado por: ciquee en 11 Marzo 2019, 14:03 pm
Hola buenas a todos/as, Estoy empezando en esto de la programación y haciendo un ejercicio me estoy volviendo loco, y seguro que no será tan difícil... La cuestión es que necesito hacer un programa que pida al usuario un carácter o numero, si es un numero de 1 a 7 diga el día de la semana asociado, y si es un carácter de la A a la G diga el numero que le corresponde, por ejemplo a la b o la B el 2... Y el problema es que no se como guardar el valor tecleado ya que si es un numero es un int y si es un carácter debe ser un char. #include <iostream> using namespace std;
char caracter;
int main(void) {
cout<<"\nEscribe un carácter: "; cin>>caracter; if (caracter >= 0 && caracter <= 7) { if (caracter == 1 ){ cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Lunes"; }
else if (caracter == 2 ){ cout<<"El dia de la semana asociado al caracter " <<caracter<< " es el Martes"; }
else if (caracter == 3 ){ cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Miercoles"; }
else if (caracter == 4 ){ cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Jueves"; }
else if (caracter == 5 ){ cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Viernes"; } else if (caracter == 6 ){ cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Sábado"; }
else if (caracter == 7 ){ cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Domingo"; } }
else if ((caracter >= 'a' && caracter <= 'g') || (caracter >= 'A' && caracter <= 'G')) { if (caracter =='a' || caracter == 'A') { cout<<"El numero asociado al caracter "<<caracter<<" es el 1"; } if (caracter =='b' || caracter == 'B') { cout<<"El numero asociado al caracter "<<caracter<<" es el 2"; } if (caracter =='c' || caracter == 'C') { cout<<"El numero asociado al caracter "<<caracter<<" es el 3"; } if (caracter =='d' || caracter == 'D') { cout<<"El numero asociado al caracter "<<caracter<<" es el 4"; } if (caracter =='e' || caracter == 'E') { cout<<"El numero asociado al caracter "<<caracter<<" es el 5"; } if (caracter =='f' || caracter == 'F') { cout<<"El numero asociado al caracter "<<caracter<<" es el 6"; } if (caracter =='g' || caracter == 'G') { cout<<"El numero asociado al caracter "<<caracter<<" es el 7"; } } else { cout<<"El carater introducido no es un valor alfanumerico aceptado"; } return 0; }
Si declaro un char me funciona con los caracteres y si declaro un int me funciona con los números, pero no se como hacer para que me funcione en ambos casos. ¿Alguna ayuda? Muchas gracias!
Título: Re: Ayuda para guardar como char o como int
Publicado por: CalgaryCorpus en 11 Marzo 2019, 14:17 pm
Reemplaza los numeros, en las comparaciones. Usa los caracteres en vez.
if( caracter == 0 )
See transforma en
if( caracter == '0' )
Título: Re: Ayuda para guardar como char o como int
Publicado por: CalgaryCorpus en 11 Marzo 2019, 14:24 pm
Puedes acortar tu programa aprovechando que Las letras son contiguas. Una vez que has detectado que la letra esta entre 'a' y 'g', puedes ver que numero tiene asociado haciendo una operacion:
caracter - 'a' + 1
Esto te da El valor que estas imprimiendo y evitas todos los ifs.
Transforma la letra a minuscula (usando tolower()) para no tener que hacer logica adicional para Las mayusculas.
Título: Re: Ayuda para guardar como char o como int
Publicado por: CalgaryCorpus en 11 Marzo 2019, 14:28 pm
Puedes evitar loa primeros ifs si guardas todos los dias en un arreglo de strings (suponiendo que lo llamas dias) y despues de comprobar que El caracter esta entre '0' y '9' imprimes
dias[caracter - '0']
Título: Re: Ayuda para guardar como char o como int
Publicado por: dariodr01 en 11 Marzo 2019, 15:08 pm
Hola, tambien puedes hacerlo con case, te dejo un ejemplo. switch(caracter) { case '1': cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Lunes"; break; case '2': cout<<"El dia de la semana asociado al caracter " <<caracter<< " es el Martes"; break; case '3': cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Miercoles"; break; case '4': cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Jueves"; break; case '5': cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Viernes"; break; case '6': cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Sábado"; break; case '7': cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Domingo"; break; }
Título: Re: Ayuda para guardar como char o como int
Publicado por: ciquee en 11 Marzo 2019, 18:24 pm
Muchísimas gracias CalgaryCorpus, era una tontería pero he estado dándole vueltas más de una hora (bueno, y mas de 2 jajaja).
Gracias también a dariodr01, pero en el ejercicio poner que no podemos utilizar Switch.
Saludos!!
|