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!
¿y que tienes hecho hasta el momento?
No tengo practicamente nada, o se como plantearlo siquiera...
sacado de la hoja de referencia de la función printf (http://www.cplusplus.com/reference/cstdio/printf/)
d or i | Signed decimal integer | 392 |
u | Unsigned decimal integer | 7235 |
o | Unsigned octal | 610 |
x | Unsigned hexadecimal integer | 7fa |
X | Unsigned hexadecimal integer (uppercase) | 7FA |
f | Decimal floating point, lowercase | 392.65 |
F | Decimal floating point, uppercase | 392.65 |
e | Scientific notation (mantissa/exponent), lowercase | 3.9265e+2 |
E | Scientific notation (mantissa/exponent), uppercase | 3.9265E+2 |
g | Use the shortest representation: %e or %f | 392.65 |
G | Use the shortest representation: %E or %F | 392.65 |
a | Hexadecimal floating point, lowercase | -0xc.90fep-2 |
A | Hexadecimal floating point, uppercase | -0XC.90FEP-2 |
c | Character | a |
s | String of characters | sample |
p | Pointer address | b8000000 |
% | 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
Cita de: Turakam en 13 Noviembre 2014, 12:01 PMTengo 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
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:
#include <stdio.h>
#include <ctype.h>
main ()
{
int c,i;
int hexa_n, octal_n;
char str[100];
printf ("Escribe un texto incluyendo numeros en hexadecimal y octal: \n");
scanf ("%s",&str);
for (i = 0; i <= strlen(str); i++)
if (isxdigit(str[i]) != 0);
{
hexa_n = strtol(str,NULL,16);
printf ("El numero hexadecimal %X es %d\n",hexa_n,hexa_n);
}
}
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!!!