2014-10-20 8 views
-1

내가 의미 입력 문자열을위한 회문 확인을하려고 오전 인스턴스를 던지는 후에 호출 종료합니다. ]; " 셀 수 없다. 문자와 숫자 만 비교합니다. 여기 은 out_of_range

내 프로그램입니다 : ... .. 잘못되는 부분을 잘 모릅니다 내가 범위 에러 나왔을 끝에

int main() 
{ 
    string input; 
    getline(cin,input); 
    if(isPalindrome(input)) 
     cout << "it is palindrome phase, or words." << endl; 
    else 
     cout << "it's not palindrome phase, or words." << endl; 
    return 0; 
} 

bool isPalindrome(string input) 
{ 
    string TemStore_1; //only letter, number will be store in here. 
    string TemStore_2; //storing TemStore_1 data other way around. 
    for(int i=0;i<input.length();i++) 
    { 
     if((input.at(i)<58) && (input.at(i)>47)) //catching number from 0-9 
      TemStore_1+=input.at(i); 
     if((input.at(i))<123 && (input.at(i)>96)) //catching letter from a-z 
      TemStore_1+=input.at(i); 
     if((input.at(i)<91) && (input.at(i)>64)) //catching letter from A-Z, and change it to a-z 
     { 
      input.at(i)+=32; 
      TemStore_1+=input.at(i); 
     } 
    } 
    for(int j=TemStore_1.length();j>-1;j--) //backwards writing the TemStore_1 into TEmStore_2 
    { 
     TemStore_2+=TemStore_1.at(j); 
    } 
    if(TemStore_1==TemStore_2) 
     return true; 
    else 
     return false; 
} 

+0

내가 얻을 수있는대로 오류를 게시 할 수 있습니까? –

+0

아마도 (i) 또는 at (j)에서 액세스해야하는 항목에 액세스하고 있습니까? –

+3

디버거에서이 코드를 실행하여 예외를 던진 내용과 범위를 벗어난 이유를 찾아서 범위를 벗어난 이유를 파악한 다음 디버거가 어떻게되었는지 알아냅니다. 우리는 불필요한 존재입니다. – chris

답변

0

이 루프 :

for(int j=TemStore_1.length();j>-1;j--) 

TemStore_1.length()에서 시작하며 TemStore_1.at(j)과 함께 사용하면 out_of_range이됩니다.

이것은 내가 알아 차린 첫 번째 오류입니다. 그것은 당신의 코드에서 유일한 오류가 아닐 수도 있습니다.

+0

두 번째 for 루프를 사용할 수 없습니다. int j는 TemStore_1 길이와 같습니까? –

+0

아 .. 내가 CU 포인트 .. 그래, 내가 바로 그걸 고쳤어. 그렉 도움을 청한다 .. –