본문 바로가기
-----ETC-----/C++ 마스터 시리즈

[C++ 마스터] Day 11: 구조체와 열거형

by cogito21_cpp 2024. 8. 1.
반응형

구조체 (Structures)

구조체는 여러 개의 변수(필드)를 하나의 복합 데이터 타입으로 묶는 데 사용됩니다. 구조체를 사용하면 관련 있는 데이터를 하나의 단위로 다룰 수 있습니다.

 

1. 구조체 선언과 정의

구조체를 선언하고 정의하는 방법은 다음과 같습니다:

struct Person {
    string name;
    int age;
    double height;
};

 

2. 구조체 변수 선언과 초기화

구조체 변수를 선언하고 초기화하는 방법은 다음과 같습니다:

Person person1;
person1.name = "John";
person1.age = 30;
person1.height = 5.9;

Person person2 = {"Jane", 25, 5.5};

 

3. 구조체와 포인터

구조체 포인터를 사용하면 구조체의 주소를 가리킬 수 있습니다.

Person person = {"Alice", 28, 5.7};
Person *p = &person;
cout << p->name << endl;  // Alice 출력
cout << p->age << endl;   // 28 출력
cout << p->height << endl;  // 5.7 출력

 

4. 구조체 배열

구조체 배열을 사용하면 여러 개의 구조체를 배열로 저장할 수 있습니다.

Person people[2] = {{"Tom", 40, 6.0}, {"Lucy", 22, 5.4}};
for (int i = 0; i < 2; i++) {
    cout << people[i].name << ", " << people[i].age << ", " << people[i].height << endl;
}

 

열거형 (Enumerations)

열거형은 열거된 값을 가지는 데이터 타입을 정의하는 데 사용됩니다. 열거형을 사용하면 코드의 가독성을 높이고 상수를 더 명확하게 정의할 수 있습니다.

 

1. 열거형 선언과 정의

열거형을 선언하고 정의하는 방법은 다음과 같습니다:

enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};

 

2. 열거형 변수 선언과 초기화

열거형 변수를 선언하고 초기화하는 방법은 다음과 같습니다:

Day today = MONDAY;

 

3. 열거형 값 사용

열거형 값을 사용하는 방법은 다음과 같습니다:

Day today = WEDNESDAY;
if (today == WEDNESDAY) {
    cout << "Today is Wednesday." << endl;
}

 

4. 열거형의 기본 값 변경

열거형의 기본 값을 변경할 수도 있습니다:

enum Color {RED = 1, GREEN, BLUE};  // GREEN = 2, BLUE = 3
Color myColor = GREEN;
cout << "Green color value: " << myColor << endl;  // 2 출력

 

예제 문제

문제 1: 구조체를 사용하여 학생 정보를 저장하고 출력하는 프로그램 작성

구조체를 사용하여 학생의 이름, 나이, 학번을 저장하고, 이를 출력하는 프로그램을 작성하세요.

 

해설:

#include <iostream>
#include <string>

using namespace std;

struct Student {
    string name;
    int age;
    int studentID;
};

int main() {
    Student student1 = {"Alice", 20, 12345};
    Student student2;
    student2.name = "Bob";
    student2.age = 22;
    student2.studentID = 67890;

    cout << "Student 1: " << student1.name << ", " << student1.age << ", " << student1.studentID << endl;
    cout << "Student 2: " << student2.name << ", " << student2.age << ", " << student2.studentID << endl;

    return 0;
}

 

이 프로그램은 구조체를 사용하여 학생 정보를 저장하고 출력합니다.

 

문제 2: 열거형을 사용하여 요일을 저장하고 출력하는 프로그램 작성

열거형을 사용하여 요일을 저장하고, 현재 요일을 출력하는 프로그램을 작성하세요.

 

해설:

#include <iostream>

using namespace std;

enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};

int main() {
    Day today = FRIDAY;

    switch (today) {
        case SUNDAY:
            cout << "Today is Sunday." << endl;
            break;
        case MONDAY:
            cout << "Today is Monday." << endl;
            break;
        case TUESDAY:
            cout << "Today is Tuesday." << endl;
            break;
        case WEDNESDAY:
            cout << "Today is Wednesday." << endl;
            break;
        case THURSDAY:
            cout << "Today is Thursday." << endl;
            break;
        case FRIDAY:
            cout << "Today is Friday." << endl;
            break;
        case SATURDAY:
            cout << "Today is Saturday." << endl;
            break;
    }

    return 0;
}

 

이 프로그램은 열거형을 사용하여 현재 요일을 저장하고 출력합니다.

 

문제 3: 구조체 배열을 사용하여 여러 학생 정보를 저장하고 출력하는 프로그램 작성

구조체 배열을 사용하여 여러 학생의 이름, 나이, 학번을 저장하고, 이를 출력하는 프로그램을 작성하세요.

 

해설:

#include <iostream>
#include <string>

using namespace std;

struct Student {
    string name;
    int age;
    int studentID;
};

int main() {
    Student students[3] = {
        {"Alice", 20, 12345},
        {"Bob", 22, 67890},
        {"Charlie", 19, 13579}
    };

    for (int i = 0; i < 3; i++) {
        cout << "Student " << i + 1 << ": " << students[i].name << ", " << students[i].age << ", " << students[i].studentID << endl;
    }

    return 0;
}

 

이 프로그램은 구조체 배열을 사용하여 여러 학생의 정보를 저장하고 출력합니다.

 

다음 단계

11일차의 목표는 C++의 구조체와 열거형에 대해 학습하는 것이었습니다. 다음 날부터는 클래스와 객체 지향 프로그래밍(OOP)에 대해 다룰 것입니다.

 

내일은 "클래스와 객체 지향 프로그래밍 (OOP) 기초"에 대해 다룰 예정입니다. 질문이나 피드백이 있으면 댓글로 남겨 주세요!

반응형