salve, ho scritto questo programma, ma in output non ottengo il risultato corretto, ad esempio inserendo come numero 8 ottengo 100 quando dovrebbe essere 1000, cioè è come se il programma "saltasse" un iterazione qualcuno saprebbe dirmi come mai?
sono convinto si tratti di una sciocchezza, ma purtroppo non risco a trovarla
codice:
#include <stdio.h>
#include <stdlib.h>
#define size (sizeof(int)*8)
int* dec_bin(int);
int main()
{
int n,*p,i;
printf("inserire numero decimale da convertire: ");
scanf("%d",&n);
p=dec_bin(n);
printf("risultato: ");
for(i=0;i<size;i++)
printf("%d",p[i]);
return 0;
}
int* dec_bin(n)
{
int i,*p;
n=n+1;
i=size;
p=(int*)calloc(size,sizeof(int));
if(p != NULL)
{
while(i>0 && n!=0)
{
if(n%2!=0)
p[i]=1;
n=n/2;
i--;
printf("%d ",n);
}
}
return p;
}