Ciao a tutti,
è appena un mese che sto studiando C e sono uno studente universitario iscritto al primo anno a informatica. E' da pochi giorni che all'Università abbiamo introdotto le funzioni, soltanto che i professori spiegano abbastanza male. Mi è stato assegnato questo problema: Convertire una sequenza di N cifre, dal sistema binario al sistema decimale utilizzando una funzione potenza. Io ho sviluppato il codice sorgente in questo modo:
#include <stdio.h>
#include <stdlib.h>
int convertitore(int x);
int potenza(int m);
int main(void)
{
int N, risultato;
printf("Inserisci il numero di bit: ");
scanf("%d", &N);
risultato=convertitore(N);
if(risultato!=0)
printf("Il numero è %d", risultato );
else
printf("Il numero che hai immesso non è binario");
return 0;
}
/*Funzione per la conversione: data una sequenza, l'utente immette N numeri, dal bit meno significativo al più significativo. c=1 viene utilizzato solo nel caso in cui il bit meno significativo sia pari a 1. */
int convertitore(int x){
int z, y, c=1, i;
for(i=1; i<=x; i++)
{
printf("Digita la prima cifra: ");
scanf("%d", &z);
if(z!=1&&z!=0){
return 0;
}else if(z==1){
y+=potenza(i);}
else if(z==0){
y+= 0; }
return y;
}
/* La funzione potenza per 2*/
int potenza(int m){
int i, pot=1;
for(i=m;i>=0; i--){
if(i==1){ pot=1; }
pot*=2;
}
return pot;
}
Il problema è nel momento in cui viene compilato. Il risultato esce sempre sbagliato. C'è un problema logico credo abbastanza grave, ma non capisco dov'è.
Grazie per qualsiasi risposta.