Napisałem program (który ma być częścią troszkę większego) którego zadaniem jest zamiana liter na liczby coś w stylu tego co jest na telefonie komórkowym z klawiaturą a,b,c -> 2 d,e,f->3 g,h,i->4 ... Z góry uprzedzam że nie działa od s w górę bo na razie to wczesna wersja. Mam z nim problem dziwnie się zachowuje - mianowicie gdy daje mu 1,2,4,6,7 liter to zamienia normalnie, gdy daje mu 3,5,8 liter to ostatnia z nich jest o 1 mniejsza od oczekiwanej a gdy daje mu 9 liter to ostatnia jest o 2 mniejsza np.
a - aa - aaa - aaaa - aaaaa - aaaaaa - aaaaaaa - aaaaaaaa - aaaaaaaaa
oczywiście napisane jedno pod drugim zamiast - daje wynik:
2 - 22 - 221 - 2222 - 22221 - 222222 - 2222222 - 22222221 - 222222220
może mi ktoś wytłumaczyć dlaczego tak się dzieje?
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin>>n;
string word[n];
int num[n];
for(int i=0; i<n; i++)
{
cin>>word[i];
num[i] = 0;
}
for(int i=0; i<n; i++)
{
for(int j=0; j<word[i].length(); j++)
num[i] += ((word[i][j] - 91)/3) * pow(10,word[i].length() - 1 - j);
cout<<num[i]<<endl;
}
return 0;
}