Dla zabawy chciałem zrobić funkcję zamieniającą string na int, ale znalazłem dziwny błąd którego nie jestem w stanie wyjaśnić. Przy dodawaniu do końcowego wyniku np. liczby 100, wynik = 99. Dodałem kilka cout'ów żeby sprawdzić poklei co się dzieje ale to dalej nie ma sensu:
#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;
int stoi(string s)
{
int rotareti=0;
int liczba=0;
for (int i=s.size()-1; i>=0;i--)
{
switch (s[i])
{
case '0':liczba+=0*pow(10,rotareti); cout<<"0 - "<<liczba<<" - "<<0*pow(10,rotareti)<<endl;break;
case '1':liczba+=1*pow(10,rotareti); cout<<"1 - "<<liczba<<" - "<<1*pow(10,rotareti)<<endl;break;
case '2':liczba+=2*pow(10,rotareti); cout<<"2 - "<<liczba<<" - "<<2*pow(10,rotareti)<<endl;break;
case '3':liczba+=3*pow(10,rotareti); cout<<"2 - "<<liczba<<" - "<<3*pow(10,rotareti)<<endl;break;
case '4':liczba+=4*pow(10,rotareti); cout<<"2 - "<<liczba<<" - "<<4*pow(10,rotareti)<<endl;break;
case '5':liczba+=5*pow(10,rotareti); cout<<"2 - "<<liczba<<" - "<<5*pow(10,rotareti)<<endl;break;
case '6':liczba+=6*pow(10,rotareti); cout<<"2 - "<<liczba<<" - "<<6*pow(10,rotareti)<<endl;break;
case '7':liczba+=7*pow(10,rotareti); cout<<"2 - "<<liczba<<" - "<<7*pow(10,rotareti)<<endl;break;
case '8':liczba+=8*pow(10,rotareti); cout<<"2 - "<<liczba<<" - "<<8*pow(10,rotareti)<<endl;break;
case '9':liczba+=9*pow(10,rotareti); cout<<"2 - "<<liczba<<" - "<<9*pow(10,rotareti)<<endl;break;
default: cout<<"Wystapil blad, liczba nie moze posiadac zadnych liter";break;
}
rotareti++;
}
return liczba;
}
int main()
{
cout << stoi("811673195")<< endl;
system("pause");
return 0;
}