Witam. Wykonuje jedno zadanie na SPOJu. Polega ono na sprawdzeniu czy dana liczba jest palindromem i jeśli nie, dodanie do niej liczby, która jest tą pierwszą ale zapisaną od tyłu. Procedura działa poprawnie i zwraca dobre wyniki. Niestety SPOJ odrzuca zadanie ze względu na błąd SIGABRT. Proszę o pomoc w zlokalizowaniu błędu. Pozdrawiam.
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int palindrome(int number, int repeats)
{
if (number < 10)
{
cout << number << " " << 0;
}
ostringstream ss;
ss << number;
string number_conversion = ss.str();
int number_size = number_conversion.size();
int i = number_size - 1, j = 0;
while (i > j && i != j)
{
if (number_conversion[j] == number_conversion[i])
{
i--;
j++;
}
else
{
string number_rotated;
for (int k = number_size - 1; k >= 0; k--)
{
number_rotated.push_back(number_conversion[k]);
}
number += stoi(number_rotated);
return palindrom(number, repeats + 1);
}
}
cout << number << " " << repeats;
}