Hola, me estoy iniciando en esto del C++ y me gustaría que me resolviéseis una duda.
El programa en el que trabajo es bastante simple y consiste en codificar o decodificar una letra o un número respectivamente, no según ASCII, sino según una tabla que contiene del 0 al 51, haciendo coincidir 'A' con '0' y las demás letras por orden empezando por las mayúsculas y siguiéndoles las minúsculas para acabar con 'z' con '51'. El programa funciona a la perfección, pero al seleccionar 'D' para decodificar e introducir como número '%' el programa me interpreta que he introducido '0', cuando debería mostrar 'Opción no válida'. ¿Por qué pasa esto? Gracias por adelantado.
Os dejo el código:
#include <iostream>
using namespace std;
int main()
{
int a;
char opcion,b;
cout<<"D/d. Decodificar"<<endl;
cout<<"C/c. Codificar"<<endl;
cout<<"Seleccione una opcion"<<endl;
cin>>opcion;
switch(opcion)
{
case 'd':
case 'D': cout<<"Dime el numero: "<<endl;
cin>>a;
if (0<=a && a<=51)
{ //Del 65 al 122 en ASCII hay 6 numeros que no corresponden a letras//
if (0<=a && a<=25)
b='A'+a;
else
b='G'+a;
cout<<"El numero "<< a<<" decodificado es: "<<b<<endl;
}
else cout<<"Opcion no valida"<<endl; break;
case 'c':
case 'C': cout<<"Dime el caracter: "<<endl;
cin>>b;
if ('A'<=b && b<='z')
{
if ('A'<=b && b<='Z')
a=b-'A';
if ('a'<=b && b<='z')
a=b-'G';
cout<<"El caracter "<<b<<" codificado es: "<<a<<endl;
}
else cout<<"Opcion no valida"<<endl; break;
default: cout<<"Opcion no valida"<<endl;
}
return 0;
}