출처 : 반크_세계유산 창덕궁
문제]
임의의 영문 문자열을 입력하여 입력된 문자열 중 문장의 첫 문자만 대문자로 출력하는 프로그램을 작성하시오. (단, 공백은 한 칸만 출력하시오.)
출력 예)
영문 문자열을 입력하시오 : I Like KunTi. You Know! Why?
입력된 문장은 아래와 같습니다.
I like kunti.
You know!
Why?
계속하시겠습니까?(Y/N) o
Y/y/N/n만 입력하세요.
다시 입력하세요...
계속하시겠습니까?(Y/N) y
영문 문자열을 입력하시오 : What kind of language do you like? I like C++.
입력된 문장은 아래와 같습니다.
What kind of language do you like?
I like c++.
계속하시겠습니까?(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 W;//단어 변수
string Str_Add;//단어를 합쳐서 문자열로 만드는 변수
vector<string> v;//문자열에서 분리한 문장 단위로 넣을 vector변수
int i,j;//반복 또는 인덱스 변수
char ch;//계속여부 체크하는 변수
while(true)
{
cout << "영문 문자열을 입력하시오 : ";
getline(cin, Str);
istringstream str(Str);//문자열을 단어단위로 구분한다.
//단어에서 문자열을 만들어 저장한다.
Str_Add="";
while(str>>W)
if(W.at(W.length()-1)=='.' || W.at(W.length()-1)=='!' || W.at(W.length()-1)=='?')
{
Str_Add+=W;
v.push_back(Str_Add);//만들어진 문장을 vector에 저장한다.
Str_Add="";//새로운 문자열을 체크하기 위하여 기존 문자열을 지운다.
}
else
{
Str_Add+=W;
Str_Add+=" ";
}
//문장의 첫글자는 대문자로 나머지는 소문자로 변환한다.
for(i=0;i<v.size();i++)
{
v[i][0]=toupper(v[i][0]);
for(j=1;j<v[i].size();j++)
v[i][j]=tolower(v[i][j]);
}
//결과출력
cout << "\n입력된 문장은 아래와 같습니다.\n";
for(i=0;i<v.size();i++)
cout << v[i] << endl;
//계속여부를 체크한다.
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;
cin.ignore();//버퍼에 남아있는 '\n'을 지운다.
v.clear();//vector를 깨끗이 지운다.
cout << endl;
}
cout << "수고하셨습니다.\n";
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 봄
'프로그램 > C++ 1000제' 카테고리의 다른 글
C++ 74제] vector 사용, 사칙연산 문제를 출제하시오. (0) | 2022.09.10 |
---|---|
C++ 73제] vector 사용, 더하기 문제를 출제하시오. (0) | 2022.09.06 |
C++ 71제] vector사용, 영문 문자열을 문장 단위로 출력하기. (0) | 2022.08.23 |
C++ 70제] vector 사용, 주어진 숫자를 분해하여 원소 찾는 프로그램. (0) | 2022.08.09 |
C++ 69제] vector 사용, 원하는 달팽이 수를 만들기 (0) | 2022.08.09 |
댓글