Sto scrivendo un convertitore da decimale a binario in C, questo è il codice:
#include <stdio.h>
#include <stdlib.h>
int main()
{
//Numero decimale
int numDec;
//Contatori
int i, n;
//Array che contiene i resti delle divisioni (numDec / 2)
int resti[] = {};
system("CLS");
printf("\nCONVERTITORE BINARIO DECIMALE\n\n");
printf("\nInserisci un numero decimale: ");
scanf("%d", &numDec);
if (numDec < 0)
{
printf("\nIl numero da te inserito e' negativo, prenderemo il valore assoluto del numero decimale\ne lo convertiremo in binario.\n");
numDec = -numDec;
}
/*
if (numero e' con la virgola)
{
}
Il problema non si pone perche' se inserisco un numero con la virgola in un int il complilatore lo arrotonda all'intero piu vicino
*/
//Conversione
for( i = 0; i < 4000; i++)
{
//Quando si arriva all'ultima divisione ovvero (numDec / 2) = 0
if (numDec == 0)
{
break;
}
resti[i] = numDec % 2;
numDec = numDec / 2;
}
//DEBUG: verificare se dopo il ciclo for il valore della variabile i e' cambiato
printf("\n%d\n", i);
printf("%d\n", numDec);
//Stampa e riordinamento del numero binario
system("PAUSE");
Mi sono bloccato perchè ad un certo punto ho bisogno di riordinare i resti contenuti nell'array in modo contrario rispetto al modo in cui li ho inseriti (se non avete ben chiaro andate qua:
http://www.lezionidimatematica.net/Binario/lezioni/bin_lezione_03.htm ). Il problema è che l'array che ho creato ha una lunghezza indefinita, perchè effettivamente il numero di cicli che verranno conseguiti e il conseguente numero di resti cresce con il crescere di "numDec". Ho pensato che se conosco quante volte il ciclo for è stato eseguito, quindi il valore della variabile "i", allora posso scrivere il secondo for per stampare i resti al contrario. Tuttavia in un printf di debug, ho notato che stampando la variabile "i" dopo il for, ottengo "1". Perchè?