私が貼り付けているプログラムでは、max2 が出力 998000 (for ループの上限) を与えているため、palindrome2 関数がループ内で正しく動作していませんが、個々の番号 '1441' では問題なく動作し、出力は 1.Can です。ガイドしてください???
#include <iostream>
long palindrome1(long);
long palindrome2(long);
int main()
{
using namespace std;
long a,b=111,max1=0,max2=0;
for(b=111;b<998001;b++)
{
if((palindrome2(b))==1)
{
max2=b;
}
}
for(a=11;a<998001;a++)
{
if((palindrome2(a))==1)
{
max1=a;
}
}
cout<<max1<<endl;
cout<<max2<<endl;
cout<<palindrome2(1441)<<endl;
cin.clear();
cin.get();
}
long palindrome2(long n)
{
long a[6],b,c=0;
do {
a[c]=n%10;
n=n/10;
c++;
} while(n>0);
b=c;
if(b%2!=0)
{
for(int l=b/2;l>=0;l--)
for(int m=(b/2)+1;m<=b;m++)
{
if(a[l]!=a[m])
{
return 0;
break;
}
}
}
else
{
return 1;
}
}
long palindrome1(long n)
{
long a[6],b,c=0;
do {
a[c]=n%10;
n=n/10;
c++;
} while(n>0);
b=c;
if(b%2==0)
{
for(int k=(b/2)-1;k>=0;k--)
for(int d=((b/2)+1);d<=b;d++)
{
if(a[k]==a[d])
{
return 0;
break;
}
}
}
else
{
return 1;
}
}