2017-02-24 5 views
0

ここに私のコードです。 「仕事」しないキャラクターのリストは、シンの周りに包まれていれば、彼らが回文であると言うことを続け、それでも彼らは正しいと言います。パリンドロームプログラムの特定の文字は動作しません

一重引用符、コンマ、ピリオド、スラッシュ、スラッシュ、ダッシュ、感嘆符、@記号、#記号、$記号、%記号、^記号は使用できません。 、&記号、*記号(アスタリスク)、記号、+記号

int main() 
{ 
int k = 1; 
int i; 
int length, halflength; 
int yesno = 1; 
char string [81]; 
char end[81] = "END"; 
while (k = 1) 
{ 
    cout << "Please enter a string of characters. " << endl; 
    cout << "Enter \"END\" in all caps to exit the program." << endl; 
    cin.getline(string, 81); 
    if (strcmp(string, "END") == 0) 
    { 
     return 0; 
    } 
    length = strlen(string); 
    halflength = length/2; 

    for (i = 0; i < halflength; i++) 
    { 
     if (string[i] != string[length - i - 1]) // comparing 
      yesno = 0; 
     break; 
    } 
    if (yesno) { 
     cout << "You have successfully entered a palindrome." << endl; 
    } 
    else 
    { 
     cout << "You have not entered a palindrome." << endl; 
     return main(); 
    } 
} 
} 

私は回文が唯一の文字の配列にすることはできませんとして、これを修正するかどうかはわからないですが、文字のシーケンスに等しいです。ラインを比較する簡単な方法があれば、私はこれに迷惑をかける時間を費やしたので、助けていただければ幸いです。

答えて

0

あなたのプログラムは、「あなたは正常に回文を入力しました」と言っています。 mlaylamのために!

問題が適切な場所にbreak文を持っていません。

ブロックは中括弧で囲む必要があります。そうしないと、最初の文字と最後を確認した後、forループが途切れて誤った結果が返されます。

if (string[i] != string[length - i - 1]){ // comparing 
      yesno = 0; 
      break; 
     } 
関連する問題