2

我需要重写程序以使用函数 isPalindrome。它需要输入一个 5 位整数并返回一个布尔值(如果是回文则为 true,否则为 false),并且不能包含任何 cout 语句。我不确定如果没有 cout 函数我将如何做到这一点。这是我的代码:

#include <iostream>

using namespace std;

int main()
{
    int number, digit1, digit2, digit3, digit4, digit5;

    cout << "\nEnter a 5-digit integer: ";
    cin >> number;

//Break down input number into individual digits:
    digit1 = number / 10000;
    digit2 = number % 10000 / 1000;
    digit3 = number % 10000 / 100;
    digit4 = number % 10000 / 10;
    digit5 = number % 10;

    if ( digit1 == digit5 && digit2 == digit4 )
        cout << number <<" is a palindrome.\n";
             else
             cout << number << " is not a palindrome.\n";
             return 0;
         }
int isPalindrome ()
{

}
4

3 回答 3

5

这应该可以帮助您入门(不会破坏太多乐趣)

int main(){
    //accept integer input using cin
    if(isPalindrome(input))
       cout << "yaay!";
    else
       cout << "nooouuu!";

}

bool isPalindrome (int input)
{
   //test things here
   return ( digit1 == digit5 && digit2 == digit4 ) 
   // ^ returns true if condition satisfied
}

此外,您分离数字的方式不正确。它应该是:

digit1 = number/10000 % 10;
digit2 = number/1000 % 10;
digit3 = number/100 % 10;
digit4 = number/10 % 10;
digit5 = number % 10;

当然,上面的内容实际上应该是循环的。

于 2013-03-13T20:24:10.520 回答
3

不必指定数字包含多少位数字。你可以尝试这样的事情:

    bool isPalindrome(int number) {
        int reverse = 0, copy = number;
        while(copy != 0) {
            reverse = reverse*10 + copy%10;
            copy /= 10;
        }
        return number == reverse;
    }
于 2013-03-13T20:37:27.687 回答
1
string s;
    cout<<"\nEnter a string : " ;
    cin>>s;
    int length = s.length();

    char* arr = new char();

    int k = length;

    for(int i = 0 ; i <= length ; i++)
    {
        arr[i] = s[k];
        k -= 1;
    }

    if(!palindrome(s, arr, length))
    {
        cout<<"\nNot Palindrome\n";
    }

    else
    {
        cout<<"\nPalindrome\n";
    }
}

bool palindrome(string& s, char* arr, int length)
{
    int j = 0;
    for(int i = 1 ; i <= length; i++)
    {
        if(arr[i]!= s[j])
        {
            return false;
        }
        j++;
    }
    return true;
}
于 2013-06-05T19:46:12.987 回答