javi_606 Forero


Registrado: 17 Jul 2007
Mensajes: 198
|
Publicado: Dom May 04, 2008 10:36 pm Título del mensaje: De hexadecimal a decimal en C |
|
|
Pues intento hacer este programa, y me da error, os pongo el código:
| Código: |
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void hexadecimal (char *cifra, double longi);
int main ()
{
char cifra[100];
double longitud;
printf ("Introduce el numero en hexadecimal: ");
gets (cifra);
longitud = strlen (cifra);
hexadecimal (cifra, longitud);
system ("pause");
return 0;
}
void hexadecimal (char *cifra, double longi){
char *p;
double resul;
resul = 0;
p = cifra;
while (*p != '\0' ){
if (*p == 'A')
resul = 10 * pow(16,longi-1) + resul;
if (*p == 'B')
resul = 11 * pow(16,longi-1)+ resul;
if (*p == 'C')
resul = 12 * pow(16,longi-1)+ resul;
if (*p == 'D')
resul = 13 * pow(16,longi-1)+ resul;
if (*p == 'E')
resul = 14 * pow(16,longi-1)+ resul;
if (*p == 'F')
resul += pow(16,longi-1)*15;
if (*p!='A' && *p!='B' && *p!='C' && *p!='D' && *p!='E' && *p!='F' ){
resul = (*p) * (pow(16,longi-1))+resul;
}
longi--;
p++;
}
printf ("El numero en decimal es: %f\n\n", resul);
} |
Cuando pongo una letra sale bien el resultado, o sea, si pongo A, sale 10, si pongo B, sale 11, y asi...Pero a la hora de poner un número es cuando me da un número raro...
¿Qué puede estar fallando? |
|