#include <iostream>
#include <ctype.h>
using namespace std;
void isPalindrome();
int main()
{
char response;
isPalindrome();
cout << "Input another string(y/n)?" << endl;
cin >> response;
response = toupper(response);
if (response == 'Y')
isPalindrome();
return 0;
}
void isPalindrome()
{
char str[80], str2[80];
int strlength;
int j = 0;
int front, back;
bool flag = 1;
cout << "Input a string:" << endl;
cin.getline(str, 80);
strlength = strlen(str);
for (int i = 0; i < strlength; i++)
{
if (islower(str[i]))
str[i] = toupper(str[i]);
}
for (int i = 0; i < strlength; i++)
{
if (isalpha(str[i]))
{
str2[j] = str[i];
j++;
}
}
str2[j] = '\0';
front = 0;
back = strlength - 1;
for (int i = 0; i < j/2; i++)
{
if (str2[front] != str2[back])
{
flag = 0;
break;
}
}
if (!(flag))
cout << "It is not a palindrome" << endl;
else
cout << "It's a palindrome" << endl;
cout << "str: " << str << " str2: " << str2 << " strlength: " << strlength << " j: " << j << endl;
cout << "front: " << front << " back: " << back << " flag: " << flag << endl;
}
아무도 내 코드가 작동하지 않는 이유를 설명하는 데 도움이 될지 궁금합니다.palindrome 프로그램에서 둘 이상의 문자열을 입력 할 수 없습니다.
한 번 제대로 실행할 수 있지만 올바른 대답을 얻을 수 있지만 다른 문자열을 입력 할 것인지 묻는 메시지가 나타나면 'y'
을 입력하면 프롬프트가 입력을 건너 뛰고 자신이 종료됩니다.
나는 cin.ginore('\n', 80)
을 시도했지만, 그저 공백의 줄을 많이 줬다. 마지막에 코드 값을 추가하여 값을 확인하고 모두 0
으로 이동하여 문자열을 삭제합니다.
시스템에서 메모리를 처리하는 방법에 대한 적절한 설명 링크가 있습니까?
편집 : 두 번째 입력 시퀀스를 실행할 때도 동일한 문제가 계속 발생합니다. 출력은 다음과 같습니다 :
나는 처음부터 프로그램을 다시 빌드하고 기능없이 수행하려고합니다. 나는 여전히 현대 C++를 사용하여 사용자 입력을 처리하는 방법을 설명하는 페이지에 대한 링크를 고맙게 생각합니다.
을 내가 반드시 그 통해 읽을 수 없다 * 엉망 내가 메인으로의
do-while
루프를 추천 할 것입니다 * 아무 것도 설명 할 필요는 없지만 최신 C++를 사용하여 사용자 입력을 처리하는 방법에 관심이 있다면 알려 주시면 게시 할 수 있습니다. –@KerrekSB 또는 당신은 바퀴를 재발견 할 필요가 없도록 링크를 게시 할 수 있습니까? :) –
나는 그것을 분명히 감사 할 것이다. 내가해야 할 일이라면 밤새도록이 일을 할 것이므로 어떤 도움이라도 대단히 감사 할 것입니다. –