Prosta funkcja zamieniająca liczbę-s w dowolnym b-systemie na int w systemie dziesiętnym (w zadaniu '-' przed liczbą oznacza jej ujemną wartość)
Opiera się na tym np:
121(4)=25(10)
oraz
1213(4)=25(10)⋅4(10)+3(10)=103(10).
(4) to liczba w systemie 4-kowym
Mam pytanie co do linijki wynik, rozumiem, że nie można po prostu dodać s[i], bo działania arytmetyczne nie działają na stringach, ale jak autor "przemycił" do wyniku dodawanie i-tej cyfry? Odjęcie znaku '0'? Może ktoś wytłumaczyć o co tam chodzi?
int zsystemu(string s, int b)
{ int wynik=0, i=0, znak=1;
if (s[0]=='-'){
znak=-1;
i=1;
}
int d=s.length();
for(;i<d;i++){
wynik=wynik*b+(s[i]-’0’);
}
return znak*wynik;
}