좋은 하루 되세요! 아래는 사용자에게 문장을 물어보고 그것에 문장의 수를 출력하는 프로그램입니다.문장에서 문장의 수를 세는 것
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
bool isPalindrome (const std::string& s) {
for (int i = 0; i < (s.length())/2; ++i) {
if (s[i] != s[s.length()-1 - i])
return false;
else
return true;
}
}
int main() {
string sentence;
int counter=0;
cout << "Please input a sentence." << endl;
getline(cin, sentence);
stringstream processtokens(sentence);
for(string word; processtokens >> word;)
if(isPalindrome(word))
++counter;
cout << "Number of Palindromes are : " << counter << endl;
}
잘 작동합니다. 그러나 예를 들어 "빠른 갈색 개그가 파란 눈을.니다."라고 입력하면 프로그램에 표시되는 문장의 수는 단지 1 개이지만 실제로는 개그와 눈의 2 가지 문장이 있습니다. 문제는 "눈"이라는 단어에 마침표가 있다는 것입니다. 그렇다면 예를 들어 사용자가 "정오, 저녁, 자정을 사랑합니다"라고 입력하면 프로그램에서 쉼표와 같은 마침표와 기타 구두점을 어떻게 무시할 수 있습니까? 정오는 회문이지만 프로그램은 쉼표 때문에 인식하지 못합니다.
또 다른 문제는 대문자입니다. 사용자가 "부인, 내 작업이 완료되었습니다."라고 입력하면이 프로그램이 작동하게 (그리고 ASCII와 동등한 것을 무시하기를) 원합니다. 나는 그것이 tolower과 관련이 있다는 것을 알고 있습니다. 요약하면
, 나는이 프로그램이 A) 가을 표시 구두점을 무시 기능와 b) 총액을 갖고 싶어.
아, "stringstream processtokens (sentence);"의 대안은 무엇입니까? 그 대신,이 프로그램을 부분 문자열 (substr)을 사용하고을 찾으려면이 프로그램이 필요합니다.
제발 나를 안내하십시오! 고마워요 그리고 모든 종류의 도움은 매우 감사드립니다. 다시 한번 감사 드리며 좋은 하루 되세요!
당신은 이미해야 할 모든 것을 거의 설명했습니다. 모든 것을 소문자로 변환하고 비 문자를 건너 뜁니다. 거의 다 왔어. –