gpt4 book ai didi

c++回文程序使用数组

转载 作者:行者123 更新时间:2023-11-27 23:07:53 25 4
gpt4 key购买 nike

我在处理第一个 if 语句时遇到了问题,当程序进入循环时它跳过了 if 语句。我的程序应该测试输入是否是回文,然后将其打印出来('Reverse'数组只是为了在通过测试时向后打印出原始短语)。如果回文是“madam I'm adam”,输出应该是“madamimadam”,没有大写或标点符号。我不确定数组是否会解决这个问题,或者我是否需要另一个条件测试来删除这些字符?如果有人可以查看我的代码并告诉我哪里出了问题/我能做什么,我将不胜感激。

#include <iostream>
#include <string>

using namespace std;

int main()
{

//Variables and Arrays

char Phrase[80];

char Reverse[80];

char* Palindrome = Reverse;

int i, j, test = 1;

cout << "Please enter a sentence to be reversed: ";
cin >> Phrase;

cin.getline(Phrase, 80);
int length = strlen(Phrase);

for(i = 0; i < (length/2); i++) // do a loop from 0 to half the length of the string
{
if(test == 1) // test for palindrome
{
if(Phrase[i] != Phrase[length-i-1]) // check if the characters match
{
test = 0; // if they don't set the indicator to false
}
}
else
{
break; // if it is not a palindrome, exit the for loop
}
}

if(test == 1) //test to print out the phrase if it's a palindrome
{
cout << "Phrase/Word is a Palindrome." << endl;

for(j = strlen(Phrase) - 1; j >= 0; Palindrome++, j--)
{
*Palindrome = Phrase[j];
cout << "The reverse is: " << Reverse << endl << endl;
}
}
else
{
cout << "Phrase/Word is not a Palindrome." << endl;
}

system("Pause");
return 0;
}

最佳答案

你使用赋值而不是使用相等

 if(test = 1) //Logical error. which will always be true
//it should be
if(test == 1)

修改你的代码以在下面工作

http://ideone.com/GnO6hB

关于c++回文程序使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22162501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com