Error en programa pasar a binario

Trephas
22 de Junio del 2005
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");
}


miguel
22 de Junio del 2005
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

Trephas
22 de Junio del 2005
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?

Trephas
22 de Junio del 2005
Solucionado, en cierto modo era obvio al recorrer el array al reves....

for (i=n-1; i>0; i--)



miguel
22 de Junio del 2005
OK, muy bien, me alegro de que lo hayas solucionado.

Un saludo,
Miguel Angel,
www.maacera.com

miguel
22 de Junio del 2005
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--)


Trephas
22 de Junio del 2005
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.

miguel
22 de Junio del 2005
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.

juanO
22 de Junio del 2005
en www.cmasmas.es.mn
hay algo de lo que necesitas, en la sección varios.