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);
Código
#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; if (car1 == 'q' && car2 == 'q') // Con esta sentencia hacemos que el programa finalice al escribir qq { 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; } } } 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:
Código
#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; valor=hexadecimal(car1,car2); int hexadecimal (char car1, char car2) { if (car1 == 'q' && car2 == 'q') { 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; } } } return 0; }
Pero me da una serie de errores al compilar, ¿alguna ayuda o sugerencia?
Gracias de antemano y saludos!