Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ciquee en 11 Marzo 2019, 14:03 pm



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.

Código:
#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.

Código
  1. switch(caracter) {
  2.    case '1':
  3.      cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Lunes";
  4.    break;
  5.    case '2':
  6.      cout<<"El dia de la semana asociado al caracter " <<caracter<< " es el Martes";
  7.    break;
  8.    case '3':
  9.      cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Miercoles";
  10.    break;
  11.    case '4':
  12.      cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Jueves";
  13.    break;
  14.    case '5':
  15.      cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Viernes";
  16.    break;
  17.    case '6':
  18.      cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Sábado";
  19.    break;
  20.    case '7':
  21.      cout<<"El dia de la semana asociado al caracter "<<caracter<< " es el Domingo";
  22.    break;
  23.  }
  24.  


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!!