출처 : 반크_세계유산 창덕궁
문제]
임의의 영문 문자열을 입력하여 입력된 문자열을 문장별로 출력 예와 같이 나타내고 단어의 개수와 문장의 개수를 각각 구하는 프로그램을 작성하시오.
출력 예)
영문 문자열을 입력하시오 : I Like KunTi. You Know! Why?
입력된 문장은 아래와 같습니다.
I Like KunTi.
You Know!
Why?
그러므로 입력된 단어는 6개이고, 문장은 3개입니다.
계속하시겠습니까?(Y/N) u
Y/y/N/n만 입력하세요.
다시 입력하세요...
계속하시겠습니까?(Y/N) N
수고하셨습니다.
참고풀이]
#include <iostream>
#include <vector>
#include <string> //string, getline()
#include <sstream> //istringstream()
#include <cctype> //touper(), tolower()
using namespace std;
int main()
{
string Str;//문자열 입력변수
string Word;//단어 변수
string Str_Add;//단어를 합쳐서 문자열로 만드는 변수
vector<string> v;//문자열에서 분리한 단어 넣을 vector변수
vector<string> vStr;//단어에서 문자열 단위로 저장할 vector변수
int i;//반복 또는 인덱스 변수
char ch;//계속여부 체크하는 변수
while(true)
{
cout << "영문 문자열을 입력하시오 : ";
getline(cin, Str);
istringstream str(Str);
//vector에 단어 단위로 저장한다.
while(str>>Word)
v.push_back(Word);
//단어에서 문자열을 만들어 저장한다.
Str_Add="";
for(i=0;i<v.size();i++)
if(v[i].at(v[i].size()-1)=='.' || v[i].at(v[i].size()-1)=='!' || v[i].at(v[i].size()-1)=='?')
{
Str_Add+=v[i];
vStr.push_back(Str_Add);//만들어진 문장을 vector에 저장한다.
Str_Add="";//새로운 문자열을 체크하기 위하여 기존 문자열을 지운다.
}
else
{
Str_Add+=v[i];
Str_Add+=" ";
}
//결과출력
cout << "\n입력된 문장은 아래와 같습니다.\n";
for(i=0;i<vStr.size();i++)
cout << vStr[i] << endl;
cout << "그러므로 입력된 단어는 " << v.size() << "개이고, ";
cout << "문장은 " << vStr.size() << "개입니다.\n";
//계속여부를 체크한다.
while(true)
{
cout << "\n계속하시겠습니까?(Y/N) ";
cin >> ch;
if(toupper(ch)=='Y' || toupper(ch)=='N') break;
cout << "Y/y/N/n만 입력하세요.\n";
cout << "다시 입력하세요...\n";
}
if(toupper(ch)=='N') break;
//vector와 cin을 깨끗이 한다.
cin.ignore(); //버퍼에 남아있는 '\n'을 지운다.
v.clear();
vStr.clear();
}
cout << "수고하셨습니다.\n";
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도
'프로그램 > C++ 1000제' 카테고리의 다른 글
C++ 73제] vector 사용, 더하기 문제를 출제하시오. (0) | 2022.09.06 |
---|---|
C++ 72제] vector 사용, 영문 문장의 첫글자를 대문자로 변환하기. (0) | 2022.08.24 |
C++ 70제] vector 사용, 주어진 숫자를 분해하여 원소 찾는 프로그램. (0) | 2022.08.09 |
C++ 69제] vector 사용, 원하는 달팽이 수를 만들기 (0) | 2022.08.09 |
C++ 68제] vector 사용, 1~5까지 사칙연산 사용하여 10만들기. (0) | 2022.07.29 |
댓글