In pratica il programma consiste in trasformare un numero in base 10 in base 2 senza vettori e col metodo BDC. In origine il compito consisteva nel trasformare un numero composto sempre da 4 cifre, ma io lo voglio fare universale, cioè che qualsiasi numero venga inserito venga convertito. Per fare ciò sto usando i logaritmi, che mi permettono di sapere da quante cifre è composto un numero. Teoricamente ogni volta dovrei estrapolare dal numero una delle cifre e mandarla a un semplice sottoprogramma contenente uno switch che a seconda della cifra di arrivo dal main stampa dentro se stesso un messaggio contenente il numero in BDC. Il problema è che non so come creare un ciclo che a ogni iterazione mi dia un valore diverso che mi permetta di estrapolare dal numero una cifra per volta. Qualcuno sa come aiutarmi?
Premetto che il programma è incompleto proprio a causa di questo mio blocco.
Questo è il programma. Sono in terza superiore.
Il programma è incompleto o comunque sbagliato, e molte variabili potrebbero essere inutili perchè provando e riprovando non le ho cancellate.
#include <stdio.h>
#include <math.h>
void migliaia (int a);
int main ()
{
float log=0,base=10,elevazione;
int n,n2,c,n3,esp=1,b,pot,f,m=0,k=0;
printf ("Inserisci il numero in decimale da convertire in binario ");
scanf ("%i",&n);
while (n<0)
{
printf ("reinserisci il numero ");
scanf ("%i",&n);
}
while (1)
{
elevazione=pow(base,log);
if (elevazione>n)
{
break;
}
log+=0.001;
}
log+=0.9998;
log=(int)log;
}
//------------------------------------------------------------
void migliaia (int a)
{
switch (a)
{
case 0:
printf ("0000 ");
break;
case 1:
printf ("0001 ");
break;
case 2:
printf ("0010 ");
break;
case 3:
printf ("0011 ");
break;
case 4:
printf ("0100 ");
break;
case 5:
printf ("0101 ");
break;
case 6:
printf ("0110 ");
break;
case 7:
printf ("0111 ");
break;
case 8:
printf ("1000 ");
break;
case 9:
printf ("1101 ");
break;
}
}