Ciao a tutti.
Ho un problema su un programma per la conversione dei numeri da una base all'altra.
In realtà funziona quasi per tutte le basi, tranne per la conversione da base 10 a base decimale.
So che è inutile come funzione all'interno del programma, visto che se già l'utente inserisce un numero in base 10 non lo vorrà in base 10, ma volevo inserirlo cmq.
La parte di codice è questa
int decimale (int n[],int dim,int baseI) {
int i,num=0;
if (baseI!=16)
{
cout<<"Inserisci il numero da convertire:";
for (i=dim-1; i>=0;i--) cin>>n;
if (baseI==2) for (i=0;i<dim;i++) num=num+n*pow(2,i);
else if (baseI==8) for (i=0;i<dim;i++) num=num+n*pow(8,i);
else if (baseI==10) for (i=0;i<dim;i++){ num=num + n*pow(10,i);}
cout<<"il numero convertito in decimale è "<<num;
}
La dim la richiedo in input all'utente.
Nel memorizzare il vettore lo memorizzo "al contrario", in modo che le posizioni siano quelle giuste per quando faccio la potenza.
Il problema è nella riga di codice
else if (baseI==10) for (i=0;i<dim;i++){ num=num + n*pow(10,i);}
se inserisco
1
2
3
mi dice che il numero convertito è 122
Perde sempre un numero a partire dalla dim 3 in poi, con dim 1 e dim 2 tutto funziona.
Sto davvero impazzendo!
mi aiutate?