elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  convertir de decimal a hexadecimal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: convertir de decimal a hexadecimal  (Leído 42,729 veces)
chaarlyyyy

Desconectado Desconectado

Mensajes: 20


Ver Perfil
convertir de decimal a hexadecimal
« en: 28 Mayo 2010, 22:29 pm »

Lo que me sucede es q al imprimir me aparecen los numeros y no las letra EJ:si pongo el 6719 debiera quedar en hexadecimal 1A3F y en ves de eso me aparece 1 10 3 15 es decir el numero correspondiente a la letra intente varias veces pero siempre me da lo mismo aki esta el codigo q tngo

#include<stdio.h>
#include<conio.h>

void main()
{
 int i,num,n,dividendo,cociente,resto,a[10];
 clrscr();
 printf("Ingrese numero: ");
 scanf("%d",& num);
 n=0;
for(dividendo = num; dividendo > 0;n++)
 {
  cociente=dividendo/16;
  resto=dividendo%16;
  a[n]=resto;
  dividendo=cociente;
 }
   printf("El numero decimal %d equivale en Hexadecimal a: ", num);
  for( i=n-1; i>=0; i--)
  {
   if(a=='10')
   {
   a='A';
   printf("%c",a);
   }
   if(a=='11')
   {
   a='B';
   printf("%c",a);
   }
   if(a=='12')
   {
   a='C';
   printf("%c",a);
   }
   if(a=='13')
   {
   a='D';
   printf("%c",a);
   }
   if(a=='14')
   {
   a='E';
   printf("%c",a);
   }
   if(a=='15')
   {
   a='F';
   printf("%c",a);
   }
   else
   {
    printf("%d",a);
   }
 }
  getch();
}


En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: convertir de decimal a hexadecimal
« Respuesta #1 en: 28 Mayo 2010, 22:40 pm »

El problema lo tienes, en que no puedes guardar un carácter (A,B,C,E,F etc) en un vector de enteros.

lo que deberías hacer, es en vez de que a[n] sea una letra, es imprimir esa letra por pantalla en vez de asignarla al vector.

ejemplo:

Código
  1. if(a[i]== 10)
  2. printf("A");
  3.  

Ahora algunas cosas relativas al programa, en vez de tantas comprobaciones con if, n o sería mejor usar if, else if, y else? void main es una mala costumbre, main siempre debería retornar algo.
Código
  1. int main(){
  2. variables;
  3. instrucciones;
  4. return 0;}

conio.h no es una librería estandar, para evitar su uso, podrías utilizar otras funciones como getchar, gets etc que si son estándares. Otra función de conio.h, clrscr te puede dar problemas según el sistema operativo donde ejectutes el programa


« Última modificación: 28 Mayo 2010, 22:43 pm por Akai » En línea

danyof

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: convertir de decimal a hexadecimal
« Respuesta #2 en: 29 Mayo 2010, 00:54 am »

Otra opcion, en vez de usar tantos if es crear por ejemplo un vector llamado

letras en donde letras[0]=A, letras[1]=B... asi hasta la F y que si el numero que tienes que mostrar es una letra llame al elemento que sea de ese vector:

Por ejemplo:

Si el numero es 10:

printf(letras[10-10]

si el numero es 13:

printf(letras[13-10]

No se si me explique con suficiente claridad....

Te comento esta alternativa porque me parece mucho mas comodo que usar tanto if... ademas, que antes que usar tanto if casi seria mejor usar un switch case...
En línea

Niko^

Desconectado Desconectado

Mensajes: 43



Ver Perfil WWW
Re: convertir de decimal a hexadecimal
« Respuesta #3 en: 29 Mayo 2010, 02:08 am »

ufff pero no es mas facil pasarlo a hexadecimal directamente ?
algo asi:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    int decimal;
  7.  
  8.    printf("introduzca un numero decimal: ");
  9.    scanf("%d", &decimal);
  10.    printf("el numero en hexadecimal es: %x\n", decimal);
  11.    system("pause");
  12. }


pero boe si te queres complicar lo estas haciendo bien por lo visto
coincido con danyof para mi es mejor usar vectores
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: convertir de decimal a hexadecimal
« Respuesta #4 en: 29 Mayo 2010, 10:31 am »

Niko, todo depende si es el típico ejercicio de cuando empiezas a programar. Está claro, las opciones sobre que tipo de datos imprimes te ayudan, pero si te han pedido lo otro...
En línea

danyof

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: convertir de decimal a hexadecimal
« Respuesta #5 en: 29 Mayo 2010, 17:10 pm »

Es que en este caso el vector es muy util ya que estas mostrando cosas por pantalla...

Los if y los switch vienen bien si en cada caso o en cada condicion tienes que hacer una ristra de tareas:

reservar memoria, abrir un archivo, llamar a tal funcion, etc etc...

pero para un simple printf mas comodo con vectores :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines