Piszę program zamieniający liczbę z dowolnego systemu na dziesiętny metodą Hornera. Z binarnego i ósemkowego mam gotowe, jednak mam problem z szesnastkowym...
int n;
int suma;
cout<<"Wybrano zamiane z systemu szesnastkowego na dziesietny."<<endl;
cout<<endl;
cout<<"Z ilu komponentow sklada sie liczba?"<<endl;
cin>>n;
cout<<endl;
cout<<"Wpisz liczbe w systemie szesnastkowym (max. 10 znakow):"<<endl;
getchar ();
char * tab = new char ( n );
for(int i=0; i<n; i++)
tab[i] = getchar(); // wczytywanie liczb znak po znaku,
for(int i=0; i<n; i++)
{
if( ((tab[i] >= 'a') && (tab[i]<='z')) || ((tab[i]>='A') && (tab[i]<='Z')))
{
switch (tab[i])
case 'a':
tab[i]=10;
break;
case 'b':
tab[i]=11;
break;
case 'c':
tab[i]=12;
break;
case 'd':
tab[i]=13;
break;
case 'e':
tab[i]=14;
break;
case 'f':
tab[i]=15;
break;
default:
cout<<"zly znak"<<endl;
}
else if ( (tab[i]>='0') && (tab[i]<='9') )
{
tab[i]=tab[i];
}
suma=(suma+tab[i])*16;
}
suma=suma+tab[n-1];
cout<<"Wynik: "<<suma<<endl;
}
Nie działa w momencie zamieniania liter na liczby. Próbowałam też zamienić switcha na if'y, ale też nie działa - gdy dodałam cout<<tab[i], żeby wyświetliło co się dzieje w momencie wpisania litery 'a' na przykład, to nie wyświetlało nic, ale gdy napisałam cout<<tab[i]-1, wyświetlało 9...