| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
m@o_614
Registrado: 13 Dic 2011 Mensajes: 20
| Publicado: 13/12/2011 10:15 am | | | Título: Ayuda codigo decimal a binario |
| Alguien que me diga cual es mi error en este programa? compila bien pero a la hora de ingresar un numero como el 2 o el 12, me sale 1 y 11 en vez de 10 y 1100, creo que en la funcion binario se esta comiendo los ceros pero no se por que??
int invertir(int acum) { int mod,inverso=0; while(acum>0) { mod=acum%10; inverso=inverso*10+mod; acum/=10; } printf("%d\n",inverso); return inverso; }
int binario(int num) { int i,res,acum=0; for(i=num;num>0;num/=2) { res=num%2; acum=acum*10+res; } return(acum); }
int main() { int num,acum,inverso; printf("Bits en la RAM\n\n"); printf("Dame un valor entero: "); scanf("%d",&num); if(num>0) { acum=binario(num); inverso=invertir(acum); } return 0; } |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7517 Ubicación: Mexico
| Publicado: 13/12/2011 5:29 pm | | | Título: |
| Como indicas el problema se evidencia en esa función donde un valor como 12 resulta en 11.
Soluciones hay varias: utilizar un array para almacenar ahí cada dígito binario o modificar la función para que sea recursiva devolviendo el numero con los bits en el orden correcto.
Un ejemplo de la segunda opción (C estándar):
| Código: | #include <stdio.h> #include <stdlib.h>
int binario(int num);
int main(void) { int numero; printf("Indica el numero: "); if (scanf("%d", &numero) != 1 || numero < 0) return EXIT_FAILURE; printf("%d (base 10) == %d (base 2)\n", numero, binario(numero)); return EXIT_SUCCESS; }
int binario(int num) { int digito = num % 2; int resto = num / 2; return resto > 0 ? binario(resto) * 10 + digito : digito; } |
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | m@o_614
Registrado: 13 Dic 2011 Mensajes: 20
| Publicado: 14/12/2011 5:26 pm | | | Título: |
| | gracias me sirvio de mucho el codigo |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |