Errore conversione numero da una base all'altra

di il
1 risposte

Errore conversione numero da una base all'altra

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?

1 Risposte

  • Re: Errore conversione numero da una base all'altra

    Uhm..
    ho creato un altro pezzo di programma in cui mi faccio stampare solo le potenze di 10 e mi è uscito questo:

    int potenza =0;
    for (i=0;i<4;i++){

    potenza = pow(10,i);
    cout<<"potenza "<<potenza<<endl;
    }


    L'output è
    potenza 1
    potenza 10
    potenza 99
    potenza 1000
Devi accedere o registrarti per scrivere nel forum
1 risposte