Witam, podczas rozwiązywanie popularnego zadania ze spoj'a o palindromach natrafiłem na problem. Program tylko raz wykonuje działanie zapisane w pętli choć nie jest ona spełniona, dodatkowo nie podlicza ilości działań wykonywanych w ramach pętli, błąd znajduje się w linii 47. Obstawiam że jest tu jakiś głupi błąd, ja niestety jestem już tam tym znużony że nie potrafię go znaleźć, liczę na waszą pomoc.
#include <iostream>
#include <cmath>
using namespace std;
int odwroc(int n)
{
int LiczbaCyfr = ceil(log10(n));
int start = 0;
for( int i=0; i<LiczbaCyfr; i++)
{
start+=pow(10.0, LiczbaCyfr - 1 - i )*(n%10);
n=n/10;
}
return start;
}
bool check_poli(int pierwsza, int druga)
{
if(pierwsza==druga) return true;
else return false;
}
int main()
{
int ilosc_dodawan=0;
cout<<"Podaj liczbe: ";
int liczba;
cin>>liczba;
int odwrocona=odwroc(liczba);
int poprawnosc=check_poli(liczba, odwrocona);
//
if(poprawnosc==1)
{
cout<<liczba<<" "<<ilosc_dodawan<<endl;
}
else
{
int poli, poli_odw;
poli=liczba+odwrocona;//110
poli_odw=odwroc(poli);//11
while(poprawnosc==1)
{
poli+=poli_odw;
poli_odw=odwroc(poli);
ilosc_dodawan++;
poprawnosc=check_poli(poli, poli_odw);
ilosc_dodawan++;
}
cout<<poli<<" "<<ilosc_dodawan<<endl;
cout<<poli_odw;
}
return 0;
}