проверка, является ли число палиндромом в C ++

0
/*
  david ballantyne
  10/10/13
  assesment lab 2
*/

//Libraries
#include <iostream>


//Global Constants

//Functioning Prototypes
using namespace std;

int main() {
         int n, num, digit, rev = 0;
         cout << "Enter a positive number"<<endl;
         cin >> num;
         num=n;

         do{
             digit = num%10;
             rev = (rev*10) + digit;
             num = num/10;

}
    while (num!=0);
         if (n == rev)
         cout << " The number is a palindrome"<<endl;
        else
         cout << " The number is not a palindrome"<<endl;
return 0;
}

Я вхожу в палиндром, и он продолжает говорить мне, что это не палиндром, также, если бы вы могли помочь мне понять, какую петлю я буду использовать, чтобы спросить: "Хотелось бы попробовать еще раз y/n". Буду благодарен.

Теги:
loops
math
qt
palindrome

3 ответа

1
Лучший ответ
cin >> num;
num=n;

назначает заданное пользователем целое num затем заменяет его значением неинициализированной переменной n

Вы хотели отменить назначение?

n=num;

вместо?

также, если бы вы могли помочь мне понять, какой цикл я бы использовал, чтобы спросить "хотите ли вы попробовать снова y/n"

Вы можете использовать do...while в while do...while цикл с условием while рассчитывается после того, как вы сообщить, было ли число палиндром.

2

вероятно, проще преобразовать число в строку. создайте новую строку, обратную порядку первой строки. А затем сравните, чтобы убедиться, что они одинаковые. На самом деле нет оснований делать какую-либо реальную математику, палиндромы лексические, а не математические.

-2
#include <iostream>
using namespace std;

 int main()
{
  int userNum, palindrome[100], rem, rem2, count=0, count2=0, compare,  
   compare2;
  bool flag;

cout << "Enter number to test for Palindrome: ";
cin >> userNum;

compare = userNum;
compare2 = userNum;

// counting the digits in the number.
do {
    rem = compare % 10;
    count += 1;
    compare /= 10;
} while (compare >= 1);

// inputing in an array.
for (int i=0; i<count; i++)
{
    rem2 = compare2 % 10;
    palindrome[i] = rem2;
    compare2 /=10;
}

// Comparing array with palindrome.
for (int i=0; i < count; i++)
{
    if (palindrome[i] != palindrome[count-i-1])
        count2 = 1;
}

if (count2 == 1)
    cout << "Not a palindrome.";
else
    cout << "Palindrome\n";

return 0;




    }
  • 0
    Вместо этого попробуйте этот код, я думаю, он намного проще и использует правильные циклы.
  • 0
    Ответы, содержащие только код, не поощряются, так как они не предоставляют много информации для будущих читателей

Ещё вопросы

Сообщество Overcoder
Наверх
Меню