Cześć wszystkim :)
Napotkałem problem w CodeBlocks, którego nie mogę rozwiązać.
"Program" ma sprawdzać czy podana liczba jest palindromem. Wg mnie powinno wszystko działać poprawnie, ale niestety tak nie jest. Przy liczbie np. 77777 program daje rezultat 0 (false), a oczekiwany to 1 (true).
Co ciekawe, przy kompilacji tego samego kodu na stronie https://onlinegdb.com/Hy_gTWJmS wszystko działa zgodnie z oczekiwaniem.
Przeinstalowałem nawet Code::Blocks, ale to nic nie zmieniło.
W takim razie moje pytanie. W czym tkwi problem?
#include <iostream>
#include <cmath>
#include <climits>
using namespace std;
bool czy_pal(long long n);
int main()
{
cout<<"long long: "<<sizeof(long long)<<endl;
cout<<"max long long: "<<LLONG_MAX<<endl;
long long liczba;
for (int i=0;i<7;i++)
{
cout<<"Podaj liczbe: ";
cin>>liczba;
cout<<liczba<<" - "<<czy_pal(liczba)<<endl;
}
return 0;
}
bool czy_pal(long long n)
{
int i=1;
long long temp=n;
while (temp/10>0)
{
temp=temp/10;
i++;
}
if (i==1)
return true;
long long rj, ri;
rj=n%10;
ri=n/(long long)pow(10,i-1);
while (rj==ri)
{
n=(n-ri*(long long)pow(10,i-1))/10;
if (n<10)
break;
i=i-2;
rj=n%10;
ri=n/(long long)pow(10,i-1);
}
if (n<10)
return true;
else
return false;
}
Z góry dziękuję za jakąkolwiek pomoc.
pozdrawiam
chemikos