Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Turakam en 13 Noviembre 2014, 12:01 pm



Título: Problema cambio de hexadecimal y octal a decimal
Publicado por: Turakam en 13 Noviembre 2014, 12:01 pm
Buenas, tengo un problema que no se resolver. Tengo que leer de una entrada estandar y convertir los numeros hexadecimal y octal que encuentre a decimal, pero volviendo a ponerlos en la entrada.

Alguien me puede ayudar?

THX!


Título: Re: Problema cambio de hexadecimal y octal a decimal
Publicado por: eferion en 13 Noviembre 2014, 12:12 pm
¿y que tienes hecho hasta el momento?


Título: Re: Problema cambio de hexadecimal y octal a decimal
Publicado por: Turakam en 13 Noviembre 2014, 12:24 pm
No tengo practicamente nada, o se como plantearlo siquiera...


Título: Re: Problema cambio de hexadecimal y octal a decimal
Publicado por: eferion en 13 Noviembre 2014, 12:55 pm
sacado de la hoja de referencia de la función printf (http://www.cplusplus.com/reference/cstdio/printf/)

d or iSigned decimal integer392
uUnsigned decimal integer7235
oUnsigned octal610
xUnsigned hexadecimal integer7fa
XUnsigned hexadecimal integer (uppercase)7FA
fDecimal floating point, lowercase392.65
FDecimal floating point, uppercase392.65
eScientific notation (mantissa/exponent), lowercase3.9265e+2
EScientific notation (mantissa/exponent), uppercase3.9265E+2
gUse the shortest representation: %e or %f392.65
GUse the shortest representation: %E or %F392.65
aHexadecimal floating point, lowercase-0xc.90fep-2
AHexadecimal floating point, uppercase-0XC.90FEP-2
cCharactera
sString of characterssample
pPointer addressb8000000
%A % followed by another % character will write a single % to the stream.%

Con esto deberías ser capaz de configurar el printf para que saque la información como tu quieres.

Un saludo


Título: Re: Problema cambio de hexadecimal y octal a decimal
Publicado por: rir3760 en 13 Noviembre 2014, 16:42 pm
Tengo que leer de una entrada estandar y convertir los numeros hexadecimal y octal que encuentre a decimal, pero volviendo a ponerlos en la entrada.
Deberías colocar el enunciado completo del ejercicio así como indicar que partes puedes realizar y en cuales tienes dificultades siempre entendiendo que las reglas de los foros prohíben hacer tareas ajenas.

La obtención de los números en base 8 o 16 la puedes realizar utilizando la función scanf con los especificadores de formato que ya indico eferion o bien la lectura debe ser de forma manual, eso lo debes aclarar tu.

En cuanto a regresarlos a la entrada estándar supongo es un error y la intención es enviarlos a la salida estándar, para ello basta con la función printf y el especificador "%d".

En todo caso ejemplos de todo ello hay a montones en la base de datos de los foros, solo es cuestión de utilizar el motor de búsqueda.

Un saludo


Título: Re: Problema cambio de hexadecimal y octal a decimal
Publicado por: Turakam en 13 Noviembre 2014, 19:23 pm
El enunciado es este: Escribe un programa que lea de la entrada estándar y convierta a decimal todos los números que encuentra, extrayéndolos en la salida estándar. Si encuentra un número en octal o en hexadecimal, debe ser convertido. Del mismo modo, detectará que los números contienen decimales y los mostrará de forma correcta

Y este es el codigo que tengo hasta ahora:

Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. main ()
  5. {
  6. int c,i;
  7. int hexa_n, octal_n;
  8. char str[100];
  9.  
  10. printf ("Escribe un texto incluyendo numeros en hexadecimal y octal: \n");
  11. scanf ("%s",&str);
  12. for (i = 0; i <= strlen(str); i++)
  13. if (isxdigit(str[i]) != 0);
  14. {
  15. hexa_n = strtol(str,NULL,16);
  16. printf ("El numero hexadecimal %X es %d\n",hexa_n,hexa_n);
  17. }
  18. }

El problema es que en este código solo me lee desde la primera posición y necesito que si por ejemplo tengo "Hola mundo A2", me tiene que leer el A2 y pasarmelo a decimal, pero con mi codigo me leeria la H y no funcionaria, una ayudita!!!