PDA

Visualizza la versione completa : C:conversione decimale-binario


mimmoss
12-03-2009, 09:54
salve raga..ho un piccolo problema.
vorrei stampare, dato un numero da tastiera, i numeri decimali che vanno da 0 a quel numero, in binario. ad esempio digito 4 e vorrei che mi stampasse a video:
0
1
10
11
100
ecco come ho pensato:

#include<stdio.h>
void binario(int);
void main()
{ int n;
printf("inserire numero da convertire:");
scanf("%d",&n);
binario(n);
}
void binario(int a)
{
int i;
for(i=0;i<a;i++)
{
if(a!=0)
{
binario(a/2);
printf("%d\n",a%2);
}
}
}

solo che mi stampa in questo modo...sempre ritornando all esempio di prima:
0
1
1
0
1
1
1
0
0..insomma si capito...dove pu essere l errore?
:argo: :berto:

mimmoss
12-03-2009, 10:03
sono sempre io...mi venuto in mente quest altro modo di risolvere il mio problema..anch esso con scarsi risultati...ecco un p:

#include<stdio.h>
void binario(int);
void main()
{ int n;
printf("inserire numero da convertire:");
scanf("%d",&n);
binario(n);
}
void binario(int a)
{
int i;
int V[10];
for(i=0;i<a;i++)
{
if(a!=0)
{
binario(a/2);
scanf("%d",&V[i]);
}
}
for(i=0;i<a;i++)
printf("%d\n",V[i]);
}
ma niente...mi da problemi di scrittura...anche se presenta 0 errori e warnings

KrOW
12-03-2009, 13:32
Ciao ... Non funziona perch inserisci il ciclo dentro la funzione (quindi si ripete anche nella ricorsione) . . . Potresti creare una funzione che stampa un intero nella sua rappresentazione binaria (attenendosi alle tue richieste) tipo:

void binario(int a)
{
static bool print0 = true;
if (a != 0)
{
print0 = false;
binario(a/2);
printf("%d", a%2);
}
else if (print0)
printf("0");
print0 = true;
}
e poi stampare tutto con un ciclo for

for(int i=0; i<10; i++)
{
binario(i);
printf("\n");
}

Loading