Menu
Coddy logo textTech

ツールの仕上げ

CoddyのC++ジャーニー「論理と制御フロー」セクションの一部。レッスン 22/56。

challenge icon

チャレンジ

簡単

すべての機能を結び付けるメインプログラムループを実装して、タスクリストツールを完成させてください。この最後のレッスンでは、メニューを繰り返し表示し、ユーザーが終了を選択するまでユーザーコマンドを処理する、完全に機能するタスク管理アプリケーションを作成します。

次の入力が提供されます。

  • 一連のメニュー選択(整数:1 は Add Task、2 は View Tasks、3 は Remove Task、4 は Quit)
  • Add Task(選択肢 1)の場合:タスクの description を表す文字列
  • Remove Task(選択肢 3)の場合:削除するタスク番号を表す整数(1 始まりのインデックス)

プログラムは次のように動作する必要があります。

  1. 前のレッスンと同じセットアップ(std::vector<std::string> として宣言された empty な tasks と welcome message)から開始する
  2. ユーザーが Quit を選択するまで継続する main loop を作成する
  3. 各反復でメニューを表示し、ユーザーの選択を読み取る
  4. 各メニュー option を処理する:
    • Choice 1:タスクの description を読み取り、push_back() を使用して追加する
    • Choice 2:すべてのタスクを番号付き形式で表示する。empty の場合は "No tasks available." を表示する
    • Choice 3:タスク番号を読み取り、検証して、.erase() を使用してタスクを削除する
    • Choice 4:プログラム loop を終了する
  5. 無効なメニュー choice の場合は、エラーメッセージを表示して loop を継続する
  6. ユーザーが Quit したときに goodbye message を表示する

次の正確な出力形式を使用してください。

初期セットアップとメニュー表示:

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]

empty の場合の 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].

無効なメニュー choice の場合:

Invalid choice. Please try again.

ユーザーが Quit した場合(選択肢 4):

Thank you for using Task List Tool!

ユーザーが 4 を入力するまで継続する while loop を使用してください。Remove Task の機能では、tasks.erase(tasks.begin() + index) を使用する前に、タスク番号が 1 と tasks.size() の間にあることを検証してください。削除後に list が empty になった場合は、残りのタスク list の代わりに "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;
}

論理と制御フローのすべてのレッスン

自分で練習してみよう: C++オンラインコンパイラ