Mam problem z tym o to zadaniem na spoju:
http://pl.spoj.com/problems/BFN1/
Mój kod wygląda następująco:
#include <iostream>
using namespace std;
int ileliczb(int a)
{
if(a==0)
return 1;
else {int ile=0;
while(a!=0)
{a/=10;
ile++;}
return ile;}}
int odwrotnoscliczby(int a)
{
if(a<10)
return a;
int liczbacyfr=ileliczb(a);
int wynik=0;
do{ liczbacyfr-=1;
wynik+=(a%10)*(10*liczbacyfr);
a/=10;}while(liczbacyfr!=1);
return wynik+=a;
}
bool czypalindram(int a)
{
int odwrotnosc=odwrotnoscliczby(a);
if(odwrotnosc==a)
return true;
else return false;
}
int main()
{
int ile;
cin >> ile;
for(int i=1;i<=ile;i++)
{int a;
cin >> a;
int j=0;
while(czypalindram(a)!=true)
{a+=odwrotnoscliczby(a);
j++;}
cout << a << " " << j << endl;
}}
Wydaje mi się, że problem tkwi w ostatniej pętli, gdy podam liczbę : 26 , to nie jest palindram, 26+62=88, wychodzi palindram wszystko działa, ale gdy już podam liczbę 28, to program świruje.
Proszę o znalezienie błędu lub jeśli kod jest do bani, to o sugestie, jak się za to zabrać :)