도구 완성하기
Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨 — 56개 중 22번째.
챌린지
쉬움모든 기능을 하나로 묶는 메인 프로그램 루프를 구현하여 할 일 목록 도구를 완성하세요. 이 마지막 레슨에서는 사용자가 종료를 선택할 때까지 메뉴를 반복해서 표시하고 사용자 명령을 처리하는 완전히 기능하는 할 일 관리 애플리케이션을 만듭니다.
다음 입력이 제공됩니다:
- 일련의 메뉴 선택 (정수: 1은 Add Task, 2는 View Tasks, 3은 Remove Task, 4는 Quit)
- Add Task (선택 1)의 경우: 할 일 설명을 나타내는 문자열
- Remove Task (선택 3)의 경우: 삭제할 할 일 번호를 나타내는 정수 (1부터 시작하는 인덱스)
프로그램은 다음을 수행해야 합니다:
- 이전 레슨의 설정(
tasks라는 이름의 빈std::vector<std::string>및 환영 메시지)으로 시작합니다. - 사용자가 종료를 선택할 때까지 계속되는 메인 루프를 만듭니다.
- 각 반복마다 메뉴를 표시하고 사용자의 선택을 읽습니다.
- 각 메뉴 옵션을 처리합니다:
- 선택 1: 할 일 설명을 읽고
push_back()을 사용하여 추가합니다. - 선택 2: 모든 할 일을 번호가 매겨진 형식으로 표시하거나, 비어 있는 경우 "No tasks available."을 표시합니다.
- 선택 3: 할 일 번호를 읽고 유효성을 검사한 후
.erase()를 사용하여 할 일을 삭제합니다. - 선택 4: 프로그램 루프를 종료합니다.
- 선택 1: 할 일 설명을 읽고
- 유효하지 않은 메뉴 선택의 경우, 에러 메시지를 표시하고 루프를 계속합니다.
- 사용자가 종료할 때 작별 메시지를 출력합니다.
다음과 같은 정확한 출력 형식을 사용하세요:
초기 설정 및 메뉴 표시:
Welcome to Task List Tool!
Menu Options:
1. Add Task
2. View Tasks
3. Remove Task
4. Quit
Task list system initialized and ready!각 메뉴 반복 시 표시:
Choose an option: Add Task (선택 1)의 경우:
Task "[task description]" added successfully!
Total tasks: [number of tasks]할 일이 있을 때 View Tasks (선택 2)의 경우:
Your Tasks:
1. [first task]
2. [second task]
...
Total tasks: [number of tasks]비어 있을 때 View Tasks (선택 2)의 경우:
No tasks available.유효한 할 일 번호로 Remove Task (선택 3)를 수행한 경우:
Task "[removed task description]" removed successfully!
Remaining Tasks:
1. [first remaining task]
...
Total tasks: [updated number of tasks]유효하지 않은 할 일 번호로 Remove Task (선택 3)를 수행한 경우:
Error: Invalid task number. Please enter a number between 1 and [total tasks].유효하지 않은 메뉴 선택의 경우:
Invalid choice. Please try again.사용자가 종료할 때 (선택 4):
Thank you for using Task List Tool!사용자가 4를 입력할 때까지 계속되는 while 루프를 사용하세요. Remove Task 기능의 경우, tasks.erase(tasks.begin() + index)를 사용하기 전에 할 일 번호가 1과 tasks.size() 사이인지 확인해야 합니다. 삭제 후 목록이 비게 되면 남은 할 일 목록 대신 "No tasks remaining."을 출력하세요.
직접 해보기
#include <iostream>
#include <vector>
#include <string>
int main() {
std::vector<std::string> tasks;
std::cout << "Welcome to Task List Tool!" << std::endl;
std::cout << std::endl;
std::cout << "Menu Options:" << std::endl;
std::cout << "1. Add Task" << std::endl;
std::cout << "2. View Tasks" << std::endl;
std::cout << "3. Quit" << std::endl;
std::cout << std::endl;
std::cout << "Task list system initialized and ready!" << std::endl;
int n;
std::cin >> n;
std::cin.ignore();
for (int i = 0; i < n; i++) {
std::string task;
std::getline(std::cin, task);
tasks.push_back(task);
}
int taskNumber;
std::cin >> taskNumber;
if (taskNumber < 1 || taskNumber > tasks.size()) {
std::cout << "Error: Invalid task number. Please enter a number between 1 and " << tasks.size() << "." << std::endl;
} else {
std::string removedTask = tasks[taskNumber - 1];
tasks.erase(tasks.begin() + (taskNumber - 1));
std::cout << "Task \"" << removedTask << "\" removed successfully!" << std::endl;
if (tasks.empty()) {
std::cout << "No tasks remaining." << std::endl;
} else {
std::cout << "Remaining Tasks:" << std::endl;
for (int i = 0; i < tasks.size(); i++) {
std::cout << (i + 1) << ". " << tasks[i] << std::endl;
}
}
std::cout << "Total tasks: " << tasks.size() << std::endl;
}
return 0;
}