본문 바로가기

Programming language/C++

[C++] To-Do Program 개발하기

소스코드

#include <iostream>
#include <vector>
#include <string>
using namespace std;

// Function to display the menu
void displayMenu() {
    cout << "\nTo-Do List Manager\n";
    cout << "-------------------\n";
    cout << "1. Add Task\n";
    cout << "2. View Tasks\n";
    cout << "3. Mark Task as Done\n";
    cout << "4. Clear Completed Tasks\n";
    cout << "5. Exit\n";
    cout << "Enter your choice: ";
}

int main() {
    vector<string> tasks;
    vector<bool> isCompleted;
    int choice;

    do {
        displayMenu();
        cin >> choice;

        switch (choice) {
            case 1: {
                string task;
                cout << "Enter a new task: ";
                cin.ignore();
                getline(cin, task);
                tasks.push_back(task);
                isCompleted.push_back(false);
                cout << "Task added successfully.\n";
                break;
            }
            case 2: {
                if (tasks.empty()) {
                    cout << "No tasks in the list.\n";
                } else {
                    cout << "Tasks:\n";
                    for (size_t i = 0; i < tasks.size(); i++) {
                        cout << (isCompleted[i] ? "[X] " : "[ ] ") << tasks[i] << endl;
                    }
                }
                break;
            }
            case 3: {
                int taskIndex;
                cout << "Enter the index of the task to mark as done: ";
                cin >> taskIndex;
                if (taskIndex >= 0 && taskIndex < static_cast<int>(tasks.size())) {
                    isCompleted[taskIndex] = true;
                    cout << "Task marked as done.\n";
                } else {
                    cout << "Invalid index.\n";
                }
                break;
            }
            case 4: {
                int removed = 0;
                for (size_t i = 0; i < tasks.size(); i++) {
                    if (isCompleted[i]) {
                        tasks.erase(tasks.begin() + i);
                        isCompleted.erase(isCompleted.begin() + i);
                        i--; // Adjust the loop index
                        removed++;
                    }
                }
                if (removed > 0) {
                    cout << removed << " completed tasks removed.\n";
                } else {
                    cout << "No completed tasks to remove.\n";
                }
                break;
            }
            case 5:
                cout << "Goodbye!\n";
                break;
            default:
                cout << "Invalid choice. Please try again.\n";
        }
    } while (choice != 5);

    return 0;
}

출력 결과

To-Do List Manager
-------------------
1. Add Task
2. View Tasks
3. Mark Task as Done
4. Clear Completed Tasks
5. Exit
Enter your choice: 1
Enter a new task: Buy groceries
Task added successfully.

To-Do List Manager
-------------------
1. Add Task
2. View Tasks
3. Mark Task as Done
4. Clear Completed Tasks
5. Exit
Enter your choice: 1
Enter a new task: Finish homework
Task added successfully.

To-Do List Manager
-------------------
1. Add Task
2. View Tasks
3. Mark Task as Done
4. Clear Completed Tasks
5. Exit
Enter your choice: 2
Tasks:
[ ] Buy groceries
[ ] Finish homework

To-Do List Manager
-------------------
1. Add Task
2. View Tasks
3. Mark Task as Done
4. Clear Completed Tasks
5. Exit
Enter your choice: 3
Enter the index of the task to mark as done: 0
Task marked as done.

To-Do List Manager
-------------------
1. Add Task
2. View Tasks
3. Mark Task as Done
4. Clear Completed Tasks
5. Exit
Enter your choice: 2
Tasks:
[X] Buy groceries
[ ] Finish homework

To-Do List Manager
-------------------
1. Add Task
2. View Tasks
3. Mark Task as Done
4. Clear Completed Tasks
5. Exit
Enter your choice: 4
1 completed tasks removed.

To-Do List Manager
-------------------
1. Add Task
2. View Tasks
3. Mark Task as Done
4. Clear Completed Tasks
5. Exit
Enter your choice: 2
Tasks:
[ ] Finish homework

To-Do List Manager
-------------------
1. Add Task
2. View Tasks
3. Mark Task as Done
4. Clear Completed Tasks
5. Exit
Enter your choice: 5
Goodbye!