两位数字的最大回文数

时间:2011-09-21 11:31:34

标签: c++ palindrome

以下程序是查找2位数字产品的回文(路径最多10 * 11)。

#include<iostream>
using namespace std;
int res1=0
void palindrome(int mul)
{
    int k,res=0,count=0;
    int p=mul;
    while(mul!=0)
    {
        k=mul%10;
        res=(res*10)+k;
        mul=mul/10;
    }
    if(res==p)
              cout<<res<<"is a palindrome:\n"
        {
        if(res1<res) 
            res1=res;
        }
    }

int main()
{
    int mul,j;
    for(int i=1;i<11;i++)
    {
        for(j=1;j<12;j++)
        {

            mul=i*j;
            if(mul>10)
            palindrome(mul);
        }
        cout<<"\n";
    }

    return 0;
}

除了最大的回文外,上述代码适用于我需要的所有内容。

我的算法就像

  1. 取每种组合的产品
  2. 如果乘法res> 10且使用函数检查结果是否为回文并打印回文。
  3. 通过与之前的数字进行比较来检查最大数量。
  4. 所以我将之前的值存储在res1变量中,我正在比较res和res1变量。

    根据我的逻辑,它最后检查(88&lt; 99)这是真的。现在问题是如何打印存储在res变量中的最后一个值?

2 个答案:

答案 0 :(得分:1)

由于您拥有存储回文值的全局变量res1,请考虑在cout之前添加cout<<"Last value: "<<res1<<endl;以输出此值:return 0

当然,我建议您的palindrome函数接受并返回res1以避免使用全局变量和其他一些语义类型的东西......但这些是不同的问题,可能不会对你很重要。

答案 1 :(得分:0)

我编写了一个代码来检查用户输入的数字是否为回文数据。代码也返回给定数字的反向。 代码如下:

#include<iostream.h>
#include<conio.h>

class palindrome
{
    int a;
    int f;
    int b;
    int l;
    int c;
    int count;
public:
    void getdata();
    void counting();
    void reverse();
    void display();
};

void palindrome::getdata()
{
    cout<<"Enter any number having atleast 2 digits";
    cin>>a;
    b=a;
    c=a;
}

void palindrome::counting()
{
    int count=1;
    f=1;
    do
    {
        a=a/10;
        count++;
    }while(a/10!=0);

    for(int k=1;k<count;k++)
    {
        f=f*10;
    }
}

void palindrome::reverse()
{
    l=0;
    for(int i=1;i<=count;i++)
    {
        int k=b%10;
        k=k*f;
        f=f/10;
        l=l+k;
        b=b/10;
    }
    cout<<"\nThe reverse of the number is"<<l;

}

void palindrome::display()
{
    if(l==c)
    {
        cout<<"\nThe number is palindrome";
    }
    else
        cout<<"\nThe number is not palindrome";
}

void main()
{
    palindrome a; 
    clrscr();
    a.getdata();
    a.counting();
    a.reverse();
    a.display();
    getch();
}