Buenas, tengo el siguiente programa, que hace lo siguiente;
Un programa que lea dos caracteres hexadecimales y dé como salida su valor en decimal, en el que se permiten el uso de minusculas y además, que si se introduce un caracter invalido te lo indicará con un mensaje de error, y por ultimo, que si escribes la sentencia qq el programa se termine.
El codigo del programa es el siguiente (ya hace todo lo que se pide);
#include <stdio.h>
int main ()
{
// Declaramos las variables
char car1;
char car2;
char valor1;
char valor2;
int valor;
int flag; // Declaramos la variable de control
do { // Iniciamos el bucle do-while
flag=0;
printf("Introduzca un valor hexadecimal:\n"); scanf("\n%c%c", &car1
, &car2
);
if (car1 == 'q' && car2 == 'q') // Con esta sentencia hacemos que el programa finalice al escribir qq
{
printf("Presione enter para salir\n"); return 0;
}
else
{
if('0'<=car1 && car1<='9')
valor1=car1-'0';
else if ('A'<=car1 && car1<='F')
valor1=car1-'A'+10;
else if ('a'<=car1 && car1<='f')
valor1=car1-'a'+10;
else
{
flag=1;
}
if('0'<=car2 && car2<='9')
valor2=car2-'0';
else if ('A'<=car2 && car2<='F')
valor2=car2-'A'+ 10;
else if ('a'<=car2 && car2<='f')
valor2=car2-'a'+10;
else
{
flag=1;
}
if (flag==0)
{
valor= 16*valor1 + valor2;
printf("EL valor decimal de 0x%c%c es %d\n",car1
,car2
,valor
); }
}
}
while(1);
return 0;
}
Y ahora me piden lo siguiente: Modificar el programa de tal forma que, además de la función main, exista una función que tome como parámetros dos caracteres hexadecimales y devuelva su valor decimal: Esto supone: declarar la nueva función, definir la nueva función y modificar la función main para que use la nueva funcion.
Pues bien, haciendo algunos cambios he llegado a esto:
#include <stdio.h>
int hexadecimal (char car1, char car2);
int main ()
{
char car1;
char car2;
char valor1;
char valor2;
int valor;
int flag;
flag=0;
printf("Introduzca un valor hexadecimal:\n"); scanf("\n%c%c", &car1
, &car2
);
valor=hexadecimal(car1,car2);
int hexadecimal (char car1, char car2)
{
if (car1 == 'q' && car2 == 'q')
{
printf("Presione enter para salir\n"); return 0;
}
else
{
if('0'<=car1 && car1<='9')
valor1=car1-'0';
else if ('A'<=car1 && car1<='F')
valor1=car1-'A'+10;
else if ('a'<=car1 && car1<='f')
valor1=car1-'a'+10;
else
{
flag=1;
}
if('0'<=car2 && car2<='9')
valor2=car2-'0';
else if ('A'<=car2 && car2<='F')
valor2=car2-'A'+ 10;
else if ('a'<=car2 && car2<='f')
valor2=car2-'a'+10;
else
{
flag=1;
}
if (flag==0)
{
valor= 16*valor1 + valor2;
printf("EL valor decimal de 0x%c%c es %d\n",car1
,car2
,valor
); }
}
}
return 0;
}
Pero me da una serie de errores al compilar, ¿alguna ayuda o sugerencia?
Gracias de antemano y saludos!