Programming/C++

C++ : 중급 프로젝트

나무수피아 2025. 5. 18. 01:09
728x90
반응형

중급 프로젝트

1. STL 기반 주소록

   STL(Standard Template Library)을 사용하여 주소록 프로그램을 만들 수 있습니다. 이 프로그램은 사용자 입력을 받아 이름, 전화번호, 이메일 등의 정보를 저장하고, 저장된 정보를 출력하는 기능을 포함합니다.

1.1. 프로젝트 구성

  • 사용자 정의 클래스와 STL의 vector를 활용
  • 주소록 항목을 구조체로 정의
  • 사용자 인터페이스: 주소록에 항목 추가, 삭제, 출력 기능 제공

1.2. 코드 예시

#include <iostream>
#include <vector>
#include <string>

struct Contact {
    std::string name;
    std::string phone;
    std::string email;
};

class AddressBook {
public:
    void addContact(const std::string& name, const std::string& phone, const std::string& email) {
        contacts.push_back({name, phone, email});
    }
    
    void displayContacts() const {
        for (const auto& contact : contacts) {
            std::cout << "Name: " << contact.name << ", Phone: " << contact.phone << ", Email: " << contact.email << std::endl;
        }
    }
    
private:
    std::vector contacts;
};

int main() {
    AddressBook book;
    book.addContact("John Doe", "123-4567", "john@example.com");
    book.addContact("Jane Smith", "987-6543", "jane@example.com");
    
    book.displayContacts();
    return 0;
}
📌 Tip: STL의 std::vector를 사용하면 동적 배열을 쉽게 관리할 수 있습니다. 추가, 삭제가 간편합니다.

2. 템플릿 기반 수식 계산기

   템플릿을 활용하여 수식 계산기를 구현할 수 있습니다. 템플릿을 사용하면 다양한 데이터 타입을 처리할 수 있는 계산기를 만들 수 있으며, 수식을 처리하는 기능은 다양한 연산자와 함께 동작합니다.

2.1. 프로젝트 구성

  • 템플릿을 사용하여 다양한 데이터 타입 지원 (int, double 등)
  • 사칙연산 기능 구현
  • 사용자 입력을 받아 계산 결과를 출력

2.2. 코드 예시

#include <iostream>

template <typename T>
T add(T a, T b) {
    return a + b;
}

template <typename T>
T subtract(T a, T b) {
    return a - b;
}

template <typename T>
T multiply(T a, T b) {
    return a * b;
}

template <typename T>
T divide(T a, T b) {
    return a / b;
}

int main() {
    double num1 = 10.5, num2 = 4.2;
    
    std::cout << "Addition: " << add(num1, num2) << std::endl;
    std::cout << "Subtraction: " << subtract(num1, num2) << std::endl;
    std::cout << "Multiplication: " << multiply(num1, num2) << std::endl;
    std::cout << "Division: " << divide(num1, num2) << std::endl;
    
    return 0;
}
📌 Tip: 템플릿을 사용하면 코드 재사용성을 높일 수 있으며, 다양한 타입에 대해 동일한 연산을 처리할 수 있습니다.

3. 간단한 게임 구조 설계

   간단한 게임의 구조를 설계하여 게임의 기본적인 흐름을 작성할 수 있습니다. 예를 들어, 콘솔에서 동작하는 간단한 전투 시스템을 설계할 수 있습니다. 이는 객체지향 프로그래밍(OOP)을 활용한 좋은 연습이 됩니다.

3.1. 프로젝트 구성

  • 플레이어와 적의 클래스를 정의
  • 전투 시스템 구현 (공격, 방어, 체력 관리)
  • 게임 흐름 제어 (게임 시작, 종료 등)

3.2. 코드 예시

#include <iostream>
#include &lt<string>

class Character {
public:
    Character(const std::string& name, int health) : name(name), health(health) {}
    
    void takeDamage(int damage) {
        health -= damage;
        if (health < 0) health = 0;
    }
    
    bool isAlive() const {
        return health > 0;
    }
    
    void attack(Character& target) {
        std::cout << name << " attacks " << target.name << "!" << std::endl;
        target.takeDamage(10);  // 예시로 10만큼 피해를 입힘
    }
    
    void displayStatus() const {
        std::cout << name << " HP: " << health << std::endl;
    }
    
private:
    std::string name;
    int health;
};

int main() {
    Character player("Hero", 100);
    Character enemy("Goblin", 50);
    
    while (player.isAlive() && enemy.isAlive()) {
        player.attack(enemy);
        enemy.attack(player);
        
        player.displayStatus();
        enemy.displayStatus();
    }
    
    return 0;
}
📌 Tip: 객체 지향 설계에서 각 클래스는 자체적인 상태와 행동을 가지며, 서로 협력하여 프로그램을 구성합니다.

마무리

   이 프로젝트들은 C++의 다양한 기능을 활용하는 좋은 예제들입니다. STL을 활용한 주소록, 템플릿 기반 계산기, 간단한 게임 구현을 통해 C++의 중급 기능들을 익힐 수 있습니다.

728x90
반응형

'Programming > C++' 카테고리의 다른 글

C++ : 스마트 포인터  (94) 2025.05.20
C++ : 고급 객체지향 설계  (94) 2025.05.19
C++ : 네임스페이스와 모듈화  (6) 2025.04.28
C++ : 표준 템플릿 라이브러리  (6) 2025.04.28
C++ : 예외 처리  (4) 2025.04.28