안녕하세요 엘체프 GG 임돠

문자열분리 해보는 문제 입니다.

 

문) 아래와 같이 문자열이 주어졌을 때 출력 결과가 정렬되어 나올 수 있도록 프로그램을 작성하십시오.

(부분 완성 문제)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <string>
#include <sstream>
#include <list>
#include <vector>
 
// 문장을 입력받아서 단어로 분리. 단, 특수 문자는 제외시키도록 조치.
using namespace std;
 
string replaceSpecWord(string str);
list<string> splitSentence(string sent);
 
string replaceSpecWord(string str) {
 
   string word = " \t\n.,!?:;-";
   size_t found = str.find_first_of(word);
 
   while (found != string::npos)
   {
     str.replace(found, word.length(), "");
     found = str.find(word, found+1);
   }
 
   return str;
}
 
list<string> splitSentence(string sent) {
 
   list<string> strList;
   string temp;
   istringstream iss;
 
   iss.str(sent);
 
 
   while (iss >> temp) {
      temp= replaceSpecWord(temp);
      strList.push_back(temp);
   }
 
   return strList;
}
 
 
int main(void) {
 
   string sent = "내일은, 99주년. 3월1일\t 삼일절입니다!";
   list<string> wList = splitSentence(sent);
 
   // 나머지 부분을 완성하십시오.
   // 힌트) 문자열 변수에 반복자 패턴을 결합하여 인쇄한다.  
        
   
 
 
   system("PAUSE");
   return 0;
}

 

 

-답

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <string>
#include <sstream>
#include <list>
#include <vector> 
 
// 문장을 입력받아서 단어로 분리. 단, 특수 문자는 제외시키도록 조치.
using namespace std;
 
string replaceSpecWord(string str);
list<string> splitSentence(string sent);
 
string replaceSpecWord(string str) {
 
    string word = " \t\n.,!?:;-";
    size_t found = str.find_first_of(word);
    while (found != string::npos)
    {
        str.replace(found, word.length(), "");
        found = str.find(word, found + 1);
    }
    return str;
 
}
 
list<string> splitSentence(string sent) {
    list<string> strList;
    string temp;
    istringstream iss;
    iss.str(sent);
 
    while (iss >> temp) {
        temp = replaceSpecWord(temp);
        strList.push_back(temp);
    }
 
    return strList;
}
 
int main(void) {
    string sent = "내일은, 99주년. 3월1일\t 삼일절입니다!";
    list<string> wList = splitSentence(sent);
    // 나머지 부분을 완성하십시오.
    list<string>::iterator it = wList.begin();
 
    while (it != wList.end()) {
        cout << *it++ << endl;
    } // while 
 
    system("PAUSE");
 
    return 0;
 
}
cs

 

 

감사합니다.

 

 

 

 

 

 

 

'스터디 > C,C++' 카테고리의 다른 글

map 정렬 문제  (6) 2018.03.05
C++ map을 이용한 login 문제  (6) 2018.02.28
C 문자열(string) 바꾸기  (6) 2018.02.28
마지막 C 시험문제 공백 사각찍기  (7) 2018.02.28
C++ 문자열 경사면 인쇄하기  (9) 2018.02.19

+ Recent posts