Consulta conversor de bases:
Publicado por Ramiro (3 intervenciones) el 17/10/2014 03:39:55
buenas gente:
estoy trabajando en un conversor de bases para un trabajo de la facu, y ya tengo todo bien solo me falta el bendito case de pasar de hexadecimal a decimal.
teniendo en cuenta que para pasar a decimal tengo que multiplicar el valor del numero (hexa) por la base del sistema (16) elevado a la posicion menos uno.
quisiera que de ser posible me digan en uqe estoy fallando:
el trato que le doy al arreglo es: lo defino como caracter y lo leo como cadena.
(les paso solo la parte del programa que me da complicaciones: si quieren puedo pasar el programa entero.
aclaro tambien que los prints que estan entre los case, son unicamente para ver el valor que me devolvian, despues los saco.
salduos
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
void dec_a_hex(int nro, char hex[]);
int bin_a_car(int car[]);
void car_a_bin(char caracter, int binario[]);
int dec_a_hex(char hex[]);
main()
{
int i, largo, sum=0;
char hex[10];
printf("Ingrese el N%cmero Hexadecimal que desea transformar a decimal: ", 163);
scanf("%s",hex);
largo=strlen(hex);
for(i=0; i<=largo; ++i)
{
if(hex[i]>='0' && hex[i]<='9')sum+= hex[i]*pow(16,largo-1);
else
{
if(hex[i]>='a' && hex[i]<='f')
{
switch(hex[i])
{
case 'a':
sum+=10*pow(16,largo-1);
printf("\nsum %d\: ", sum);
break;
case 'b':
sum+=11*pow(16,largo-1);
printf("\nsum %d\n ", sum);
printf("\nhex %c\n ", hex[i]);
break;
case 'c':
sum+=12*pow(16,largo-1);
printf("\nsum %d\n: ", sum);
break;
case 'd':
sum+=13*pow(16,largo-1);
printf("\nsum %d\n: ", sum);
break;
case 'e':
sum+=14*pow(16,largo-1);
printf("\nsum %d\n: ", sum);
break;
case 'f':
sum+=15*pow(16,largo-1);
printf("\nsum %d\n: ", sum);
break;
}
}
}
}
printf("El N%cmero %s en el sistema Hexadecimal es equivalente al numero: %d en el sistema Decimal",163, hex, sum);
printf("\n");
system("pause");
}
Saludos
estoy trabajando en un conversor de bases para un trabajo de la facu, y ya tengo todo bien solo me falta el bendito case de pasar de hexadecimal a decimal.
teniendo en cuenta que para pasar a decimal tengo que multiplicar el valor del numero (hexa) por la base del sistema (16) elevado a la posicion menos uno.
quisiera que de ser posible me digan en uqe estoy fallando:
el trato que le doy al arreglo es: lo defino como caracter y lo leo como cadena.
(les paso solo la parte del programa que me da complicaciones: si quieren puedo pasar el programa entero.
aclaro tambien que los prints que estan entre los case, son unicamente para ver el valor que me devolvian, despues los saco.
salduos
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
void dec_a_hex(int nro, char hex[]);
int bin_a_car(int car[]);
void car_a_bin(char caracter, int binario[]);
int dec_a_hex(char hex[]);
main()
{
int i, largo, sum=0;
char hex[10];
printf("Ingrese el N%cmero Hexadecimal que desea transformar a decimal: ", 163);
scanf("%s",hex);
largo=strlen(hex);
for(i=0; i<=largo; ++i)
{
if(hex[i]>='0' && hex[i]<='9')sum+= hex[i]*pow(16,largo-1);
else
{
if(hex[i]>='a' && hex[i]<='f')
{
switch(hex[i])
{
case 'a':
sum+=10*pow(16,largo-1);
printf("\nsum %d\: ", sum);
break;
case 'b':
sum+=11*pow(16,largo-1);
printf("\nsum %d\n ", sum);
printf("\nhex %c\n ", hex[i]);
break;
case 'c':
sum+=12*pow(16,largo-1);
printf("\nsum %d\n: ", sum);
break;
case 'd':
sum+=13*pow(16,largo-1);
printf("\nsum %d\n: ", sum);
break;
case 'e':
sum+=14*pow(16,largo-1);
printf("\nsum %d\n: ", sum);
break;
case 'f':
sum+=15*pow(16,largo-1);
printf("\nsum %d\n: ", sum);
break;
}
}
}
}
printf("El N%cmero %s en el sistema Hexadecimal es equivalente al numero: %d en el sistema Decimal",163, hex, sum);
printf("\n");
system("pause");
}
Saludos
Valora esta pregunta
0