Hola buenas tardes, a ver si me podéis echar una mano con este programa
se supone que tiene que decir error en el primer valor introducido si esta mal el primero o error en el segundo si es el segundo, la idea del programa es convertir un número hexadecimal en decimal.
el problema es que cuando escrimo 1g me dice que es 32 y no me dice error en el segundo valor introducido
Código (c) [Seleccionar]
#include <stdio.h>
#define CTE 16
#define ERROR
#define NOERROR
int main ()
{
char car1 = '0';
char car2 = '0';
int valor1 = 0;
int valor2 = 0;
int valor = 0;
int cuno;
int cdos;
printf ("Introduzca un valor en Hexadecimal:");
scanf ("%c%c", &car1, &car2);
if ( ( ('0' <= car1) && (car1 <= '9') ) || ( ('A' <= car1) && (car1 <= 'F') ) || ( ('a' <= car1) && (car1 <= 'f') ) || ( ('0' <= car2) && (car2 <= '9') ) || ( ('A' <= car2) && (car2 <= 'F') ) || ( ('a' <= car2) && (car2 <= 'f') ) )
{
if ( ('0' <= car1) && (car1 <= '9') )
valor1 = car1 - '0';
else if ( ('A' <= car1) && (car1 <= 'F') )
valor1 = car1 - 'A' + 10;
else
valor1 = car1 - 'a' + 10;
if ( ('0' <= car2) && (car2 <= '9') )
valor2 = car2 - '0';
else if ( ('A' <= car2) && (car2 <= 'F') )
valor2 = car2 - 'A' + 10;
else
valor2 = car2 - 'a' + 10;
valor = CTE * valor1 + valor2;
printf("El valor decimal de 0x%c%c es %d\n", car1, car2, valor);
}
else if ( ( ('0' > car1) && (car1 > '9') ) || ( ('A' > car1) && (car1 > 'F') ) || ( ('a' > car1) && (car1 > 'f') ) )
{
printf ("Error en el primer valor introducido\n");
}
else if ( ( ('0' > car2) && (car2 > '9') ) || ( ('A' > car2) && (car2 > 'F') ) || ( ('a' > car2) && (car2 > 'f') ) )
{
printf ("Error en el segundo valor introducido\n");
}
return 0;
}
se supone que tiene que decir error en el primer valor introducido si esta mal el primero o error en el segundo si es el segundo, la idea del programa es convertir un número hexadecimal en decimal.
el problema es que cuando escrimo 1g me dice que es 32 y no me dice error en el segundo valor introducido