2015-01-07 2 views
-1

내 palindrome 프로그램에서 문자열 주위를 뒤집는 데 문제가 있습니다. 내가 원한 것은 예를 들어 "cat"을 입력하고 "tac"을 꺼내는 것입니다. 그러나 그것을 실행할 때 역순으로 된 문자열을 표시하지 않으며 프로그램이 작동을 멈 춥니 다. 누구든지 나를 도울 수 있습니까?Palindrome 프로그램 도움말 C++

#include <iostream> 
#include <string.h> 

using namespace std; 

int main(){ 
string phrase1,phrase2; 
int len; 

cout<<"Please enter a word or phrase: "; 
cin>>phrase1; 
len = phrase1.length(); 

for(int a=1;a<=len;a++){ 
    phrase2[len-a] = phrase1[a-1]; 
} 
cout<<endl<<phrase1<<endl<<phrase2<<endl; 

return 0; 
} 
+0

Palindrome에 대한 많은 예제를 찾으려면 "C++ palindrome"에 대한 StackOverflow를 검색하십시오. –

+0

phrase1이 작동하고 "cat"이 표시되지만 phrase2가 표시되지 않습니다. 대신 .exe 프로그램이 작동하지 않는다는 대화 상자가 나타납니다. – user3746711

+0

@ThomasMatthews에는 두 가지 유형의 질문이 있습니다. 하나는 "어떻게해야합니까?"입니다. 두 번째는 "내 코드를 구체적으로 무엇이 잘못 했습니까?"입니다. 귀하의 제안은 처음에는 좋지만이 질문은 두 번째 유형입니다. –

답변

3

먼저 올바른 길이로 phrase2의 크기를 조정해야합니다.

phrase2.resize(len); 
+0

감사합니다! 이것은 효과가 있었다. – user3746711

2

이 쓸 경우 :

for(int a=1;a<=len;a++){ 
    phrase2[len-a] = phrase1[a-1]; 
} 

하는 당신은 phrase1의 반대와 phrase2을 채우기 위해 노력하고 있습니다. 그러나 처음에는 phrase2에 대한 기억을 할당하지 않았습니다!

회문이므로, phrase2와 같은 크기의 phrase1이 있기를 원한다는 것을 알고 있으므로 사전에 phrase2.resize(len);으로 작성할 수 있습니다.