Error en programa pasar a binario
Buenas, estoy haciendo un programa que pase de un número decimal a su representación en binario, y tengo un problema al almacenar los datos en un array, se que tengo que declarar el array y luego poner todos sus valores a cero, pero no soy capaz de hacerlo, a ver si alguien me dice donde está el error y como solucionarlo. El programa en cuestión es este:
/++++++++++++++++++++++++++/
#include<stdio.h>
#include<math.h>
int numdecimal=5;
int divisor=2;
int dividendo;
int cociente;
int resto;
int n;
int main(){
int tabla[n];
n=0;
while (numdecimal>0){
cociente=numdecimal/divisor;
resto=numdecimal%divisor;
printf ("calculon Dividendo=%dn cociente=%dn Resto=%dn", numdecimal, cociente, resto);
resto=tabla[n];
numdecimal=cociente;
n++;
}
printf("El valor del número es==>> %d", tabla[n]);
system("pause");
}
/++++++++++++++++++++++++++/
#include<stdio.h>
#include<math.h>
int numdecimal=5;
int divisor=2;
int dividendo;
int cociente;
int resto;
int n;
int main(){
int tabla[n];
n=0;
while (numdecimal>0){
cociente=numdecimal/divisor;
resto=numdecimal%divisor;
printf ("calculon Dividendo=%dn cociente=%dn Resto=%dn", numdecimal, cociente, resto);
resto=tabla[n];
numdecimal=cociente;
n++;
}
printf("El valor del número es==>> %d", tabla[n]);
system("pause");
}
Hola.
Primero, la declaración del array tabla deberÃa ser, por ejemplo:
int tabla[16];
No puedes poner entre [ ] una variable, como es el caso de n. Pero deja n declarada que te sirve para el resto del programa, ok?
Luego, dentro de la sentencia while tienes:
resto = tabla[n];
y deberÃa ser:
tabla[n] = resto;
porque es el resto lo que quieres guardar en el array.
Luego, para mostrar el número necesitarás un código del siguiente tipo para recorrer el array:
int i;
printf("El valor del número es==>> ");
for (i=0; i<n; i++)
{
printf("%d", tabla[i]);
}
¿puedes verlo?
Espero que te sirva de ayuda.
Un saludo,
Miguel Angel
www.maacera.com
Primero, la declaración del array tabla deberÃa ser, por ejemplo:
int tabla[16];
No puedes poner entre [ ] una variable, como es el caso de n. Pero deja n declarada que te sirve para el resto del programa, ok?
Luego, dentro de la sentencia while tienes:
resto = tabla[n];
y deberÃa ser:
tabla[n] = resto;
porque es el resto lo que quieres guardar en el array.
Luego, para mostrar el número necesitarás un código del siguiente tipo para recorrer el array:
int i;
printf("El valor del número es==>> ");
for (i=0; i<n; i++)
{
printf("%d", tabla[i]);
}
¿puedes verlo?
Espero que te sirva de ayuda.
Un saludo,
Miguel Angel
www.maacera.com
Lo he modificado un poco, porque como pusiste tu el printf me representaba los números al revés, entonces tube que cambiar las funciones de i, y me quedarÃa asÃ:
------------------------------------
int main(){
int tabla[120];
n=0;
while (numdecimal>0){
cociente=numdecimal/divisor;
resto=numdecimal%divisor;
printf ("calculo\n Dividendo=%d\n cociente=%d\n Resto=%d\n", numdecimal, cociente, resto);
tabla[n]=resto;
numdecimal=cociente;
n++;
}
int i;
for (i=n; i>0; i--)
{
printf("%d", tabla[i]);
}
system("pause");
}
-------------------------------------------
Está bien, pero me sale un 0 al inicio del número que deberÃa estar al final es decir me da algo como 01100110 en vez de 11001100.
¿Alguna idea?
------------------------------------
int main(){
int tabla[120];
n=0;
while (numdecimal>0){
cociente=numdecimal/divisor;
resto=numdecimal%divisor;
printf ("calculo\n Dividendo=%d\n cociente=%d\n Resto=%d\n", numdecimal, cociente, resto);
tabla[n]=resto;
numdecimal=cociente;
n++;
}
int i;
for (i=n; i>0; i--)
{
printf("%d", tabla[i]);
}
system("pause");
}
-------------------------------------------
Está bien, pero me sale un 0 al inicio del número que deberÃa estar al final es decir me da algo como 01100110 en vez de 11001100.
¿Alguna idea?
Solucionado, en cierto modo era obvio al recorrer el array al reves....
for (i=n-1; i>0; i--)
for (i=n-1; i>0; i--)
OK, muy bien, me alegro de que lo hayas solucionado.
Un saludo,
Miguel Angel,
www.maacera.com
Un saludo,
Miguel Angel,
www.maacera.com
Hey!!
Cuidado, que si no me equivoco en el for en vez de ser i>0:
for (i=n-1; i>0; i--)
deberÃa ser i>=0, porque la celda 0 existe y en ella deberÃa haber algo:
for (i=n-1; i>=0; i--)
Cuidado, que si no me equivoco en el for en vez de ser i>0:
for (i=n-1; i>0; i--)
deberÃa ser i>=0, porque la celda 0 existe y en ella deberÃa haber algo:
for (i=n-1; i>=0; i--)
Exacto, faltaba un cero al final, que ahora si aparece, muchas gracias porque no me habÃa dado cuenta.
Un saludo y gracias de nuevo.
Un saludo y gracias de nuevo.
De nada.
De todos modos, en www.maacera.com, en la sección Programación en C/C++ del apartado Formación puedes encontrar ejercicios resueltos y más recursos.
Saludos.
De todos modos, en www.maacera.com, en la sección Programación en C/C++ del apartado Formación puedes encontrar ejercicios resueltos y más recursos.
Saludos.
