본문 바로가기

C++ programming

명품 C++ programming 실습 문제 2장 8번

문제 :

한 라인에 ';' 으로 5개의 이름을 구분하여 입력받아, 각 이름을 끊어내어 화면에 출력하고 가장 긴 이름을 판별하라.

 

목적 및 힌트 :

cin.getline()으로 문자열 읽기

';'까지 문자열을 읽고자 하면 다음 코드를 사용하고 

1
2
char name[100];
cin.getline(name, 100';');

 

5개 읽어야 하니 5번 루프를 돈다.

 

실행 결과 :

 

코드 :

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
#include<iostream>
#include<cstring>
using namespace std;
 
int main() {
 
    int A=0;
    int i;
    char name[100];
    char longName[100];
    
    cout << "5 명의 이름을 ';' 으로 구분하여 입력하세요 \n>>";
    
    for(i=1;i<6;i++){
        cin.getline(name,100,';');
        cout << i << " : " << name << endl;
        if(A < strlen(name)) {
            A = strlen(name);
            strcpy(longName,name);
        }
    }
    cout << "가장 긴 이름은 " << longName;
    
    return 0;
}

 

 

설명 :

cin.getline() 을 이용하여 입력 받았는데 이때 ';'를 구분자로 사용하여 입력 받았습니다.

';'를 기준으로 구분하여 문자열을 입력받고 그 문자열의 길이를 변수 A와 비교하여 A보다 긴 name[] 문자열은 strcpy() 함수를 이용하여 배열 longName[]에 복사 하였습니다.

strlen() 함수를 이용하여 각각의 문자열의 길이를 구하였고, strcpy() 함수를 이용하여 문자열을 복사 하였습니다.

strlen() 함수와 strcpy() 함수는 c++에서 cstring 헤더파일에 정의되어 있습니다.