再帰関数を使って回文判定をするプログラムを書いています。
下のコードで、カンマは正しく処理しますがスペースを受け取るとそこで入力が別々になってしまいます。
どうすればスペースを入力しても、正しく出力できますか?
c++
1#include <iostream> 2#include <cctype> 3using namespace std; 4 5bool palindrome(char str[], int a, int b); 6 7int main() { 8 char str[100]; 9 while (true) { 10 cout << "Enter a string: "; 11 cin >> str; 12 if (strcmp(str, "quit") == 0) { 13 break; 14 } 15 else if (isAPalindrome(str, 0, strlen(str) - 1) == true) { 16 cout << str << " is a palindrome" << endl; 17 } else { 18 cout << str << " is not a palindrome" << endl;; 19 } 20 } 21} 22 23bool palindrome(char str[], int a, int b) { 24 if (a > b) { 25 return true; 26 } else if (ispunct(str[a]) == true || isspace(str[a]) == true) { 27 return a++; 28 } else if (ispunct(str[b]) == true || isspace(str[b]) == true) { 29 return b--; 30 } else if (toupper(str[a]) == toupper(str[b])) { 31 return palindrome(str, a + 1, b - 1); 32 } else { 33 return false; 34 } 35} 36 37/* 38出力結果 39Enter a string: abA 40abA is a palindrome 41Enter a string: ab,a 42ab,a is a palindrome 43Enter a string: ab a 44ab is not a palindrome //ここでabとaに分かれる 45Enter a string: a is a palindrome //ここは自動で出力される 46Enter a string: quit 47*/ 48/* 理想 49Enter a string: ab a 50ab a is a palindrome 51*/ 52
質問のコードはコンパイルエラーになり、実行できません。
コメントに書かれている出力結果を得られるコードを提示してください。