Cercherò di essere breve e coinciso, ho scritto un pezzo del programma, con le MIE CONOSCENZE...
lo allego quì spiegando quello che ho fatto.
Ho ragionato nel seguente modo:
per qualsiasi base che l' utente immetterà passo prima per la base 10 e successivamente alla base finale eseguendo le divisioni ripetute.
Per passare alla base 10 ho scritto una funzione nella quale faccio un for che va da I fino alla lunghezza della stringa(cioè numero1 ,al quale è passato l'argomento numero nel main), in questo modo ogni volta prendo il carattere del numero, iniziando da quello finale, e lo converto in intero, in modo che poi possa moltiplicare il numero ottenuto in intero per la base elevata all' esponente i, che se ricordate era proprio il contatore nel ciclo for. Tutti i prodotti saranno messi all' interno di una variabile somma e successivamente sommata e aggiornata con i valori della variabile conv.
ES. 120 base 4 --> 0*4^0 , 2*4^1, 1*4^2, i risultati vengono progressivamente sommati nella variabile somma.
Il problema è il seguente: ho il timore che abbia sbagliato a fare il casting, perché il ragionamento è corretto.
Sto sviluppando solo il passaggio di transizione alla base 10, non incominciate a dire che non è completo...
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
int somma;
int conversione(string numero1,int base_start1){
int cast,conv,lunghezza;
char carattere;
lunghezza=numero1.length();
for(int i=0;i<lunghezza;i++){
carattere=numero1[lunghezza-i]; // il carattere è alla posizione finale!
cast=static_cast <int>(carattere);
conv=cast*pow(base_start1,i);
somma += conv;
}return somma;
}
int main(){
int base_start,base_end;
string numero;
cout<<"Inserisci numero da convertire--> "<<endl; cin>>numero;
cout<<"Inserisci la base di partenza--> "<<endl; cin>>base_start;
cout<<conversione(numero,base_start);
cout<<"Inseririsci la base di arrivo--> "; cin>>base_end;
return 0;
}