初投稿!これは "Advanced C & C++" の 2 学期なので、どんな助けも大歓迎です。私はすでに、この大量の論理的に不適切なコードで何を行っているか (または行っていないか) を理解するのに役立つように、stackoverflow と他のいくつかのリソースを精査しました。
このプログラムの目的は、ユーザーが指定した「数値」が回文であるかどうかを認識することです。シンプルですね。うーん...まあ、これは私が立ち往生しているものです:
#include <iostream>
using std::cout;
using std::cin;
#include <string>
using std::string;
#include <cstdlib>
int main()
{
//variable declarations
string buffer;
//user input
cout << "Enter a number to see if it is a palindrome[Q to quit]: ";
getline(cin, buffer);
//looooop
while(buffer != "Q" && buffer !="q")
{
int userNum, length, sum = 0, temp;
userNum = atoi(buffer.c_str());
for(temp = userNum; userNum !=0; userNum=userNum/10)
{
length = userNum % 10;
sum = sum*10+length;
}
if(temp==sum)
cout << temp << " is a palindrome!!\n\n";
else
cout << buffer << " is NOT a palindrome!\n\n";
cout << "Enter a number to see if it is a palindrome[Q to quit]: ";
getline(cin, buffer);
}
}
「010」または「400」を入力した場合に問題が発生します。この場合、「400」は本質的に「00400」であり、どちらも回文と見なす必要があります。