PDA

Visualizza la versione completa : [C] conversione da binario a decimale


fenics
22-04-2014, 11:40
Ciao a tutti, questo sotto è la conversione di un numero decimale a binario:


#include<stdio.h>

#define MAX 32

void conversione(int bin[], int dec);
void stampa(int bin[]);

main()
{
int binario[MAX], decimale;

printf("Inserisci un valore decimale: ");
scanf("%d", &decimale);

conversione(binario, decimale);
stampa(binario);

return 0;
}

void conversione(int bin[], int dec)
{
int i;

for(i=0; i<=32; i++)
{
if(dec%2==0)
bin[i]=0;
else
bin[i]=1;
dec=dec/2;
}
}

void stampa(int bin[])
{
int i;
int controllo_uno=0;

for(i=32; i>=0; i--)
{
if(bin[i]==1)
{
controllo_uno=1;
}
if(controllo_uno==1)
{
printf("%d", bin[i]);
}
}
system("PAUSE");
}


Ma se devo fare il contrario??

oregon
22-04-2014, 11:58
Parti dalla teoria ... quali operazioni devi fare per questa conversione?

fenics
22-04-2014, 12:03
esempio 110010.

parto da dx che sarebbe 2^1, spostandomi verso sx sono 2^2, 2^3 ecc... quindi 1, 2, 4, 8 e così via. l'ultimo 1 corrisponde a 32 + 12 + 2 = 50.

Alex'87
22-04-2014, 12:08
C'entra niente, ma se hai una costante MAX che vale 32 perché poi usi 32 e non MAX?

fenics
22-04-2014, 12:11
giusto, quello è vero ed ho corretto

comnq ho provato modificare il codice, solo che come risultato mi da sempre 0


#include<stdio.h>

#define MAX 32

void conversione(int bin[], int dec);
void stampa(int dec);

main()
{
int binario[MAX], decimale;

printf("Inserisci un valore binario: ");
scanf("%d", &binario[MAX]);

conversione(binario, decimale);
stampa(decimale);

return 0;
}

void conversione(int bin[], int dec)
{
int i;

for(i=0; i<=MAX; i++)
{
if(dec%2==0)
bin[i]=0;
else
bin[i]=1;
dec=dec/2;
}
}

void stampa(int dec)
{
int i, bin[MAX];

for(i=0; i<=MAX; i++)
{
if(dec%2==bin[MAX])
printf("%d", dec);
}
system("PAUSE");
}

Alex'87
22-04-2014, 13:09
La variabile decimale viene passata per copia pertanto qualsiasi modifica subirà all'interno del metodo morirà all'interno di quel metodo.

E poi... sei sicuro che quel metodo converta un numero binario in un numero decimale?

edit

La fase di acquisizione del numero binario è sbagliata. O lo leggi cifra per cifra oppure lo leggi come una stringa. Leggere un array così non ha senso.

MItaly
22-04-2014, 13:27
Come già detto numerose volte, il linguaggio di riferimento va indicato nel titolo... :fagiano:

LeleFT
22-04-2014, 14:25
parto da dx che sarebbe 2^1, [...]



Ehm... no: si parte da 2^0.


Ciao. :ciauz:

fenics
23-04-2014, 11:26
ok! ho capito il procedimento, grazie!!

Loading