ora ho inizializzatocome hai detto tu ...e adesso come risultato mi viene 0.
ora ho inizializzatocome hai detto tu ...e adesso come risultato mi viene 0.
Ah bene quindi vedi che un passo avanti lo abbiamo fatto?Originariamente inviato da galislorer
ora ho inizializzatocome hai detto tu ...e adesso come risultato mi viene 0.
Posta il codice aggiornato però, altrimenti se non sappiamo a che valori hai fatto l'inizializzazione è un po' difficile aiutarti...
void conversionedecimale(char stringa[dim],int lunghezza,char dec[dim])
{
int i=0;
int j=0;
int peso=1;
int potenza=0;
char numero=0;
strcpy(dec,stringa);
for(i=0;i<lunghezza;i++)
{
while(j<potenza)
{
peso=2*peso;
j++;
}
j=0;
potenza++;
numero=numero+dec[i]*peso;
}
printf("il numero decimale e': %d",numero);
}
OK, adesso esegui passo passo la funzione e guarda ad ogni step come si costruisce il numero.
Vedrai che ci sono un paio di errori concettuali: prima di tutto, dato che parti dal primo carattere della stringa binaria (il più significativo) il peso deve diminuire ad ogni carattere, non aumentare.
Inoltre non devi fare il calcolo con dec[i] perchè quello è un carattere ASCII. Devi sottrarre '0' (0x30) per avere 0 o 1.
Infine, se vuoi calcolare il peso in quel modo devi reinizializzarlo a 1 ad ogni ciclo, altrimenti continua a raddoppiare.
Il codice postalo tra tag CODE, altrimenti si perde la formattazione.