Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

إنهاء الأداة

جزء من قسم المنطق وتدفق التنفيذ في رحلة C++ على Coddy. الدرس 22 من 56.

challenge icon

التحدي

سهل

أكمل أداة قائمة المهام الخاصة بك من خلال تنفيذ الحلقة الرئيسية للبرنامج التي تربط جميع الوظائف معًا. ينشئ هذا الدرس النهائي تطبيقًا كامل الوظائف لإدارة المهام، حيث يعرض القائمة بشكل متكرر ويعالج أوامر المستخدم حتى يختار الخروج.

سيتم توفير المدخلات التالية:

  • سلسلة من اختيارات القائمة (أعداد صحيحة: 1 من أجل Add Task، و2 من أجل View Tasks، و3 من أجل Remove Task، و4 من أجل Quit)
  • من أجل Add Task (الاختيار 1): سلسلة نصية تمثل وصف المهمة
  • من أجل Remove Task (الاختيار 3): عدد صحيح يمثل رقم المهمة المراد إزالتها (الفهرسة التي تبدأ من 1)

يجب أن يقوم برنامجك بما يلي:

  1. البدء بالإعداد نفسه من الدروس السابقة (std::vector<std::string> فارغ باسم tasks ورسالة ترحيب)
  2. إنشاء حلقة رئيسية تستمر حتى يختار المستخدم الخروج
  3. عرض القائمة وقراءة اختيار المستخدم في كل تكرار
  4. معالجة كل خيار من خيارات القائمة:
    • الاختيار 1: قراءة وصف مهمة وإضافتها باستخدام push_back()
    • الاختيار 2: عرض جميع المهام بتنسيق مرقّم، أو عرض "No tasks available." إذا كانت القائمة فارغة
    • الاختيار 3: قراءة رقم مهمة والتحقق من صحته، ثم إزالة المهمة باستخدام .erase()
    • الاختيار 4: الخروج من حلقة البرنامج
  5. بالنسبة إلى اختيارات القائمة غير الصالحة، عرض رسالة خطأ ومتابعة الحلقة
  6. طباعة رسالة وداع عندما يخرج المستخدم

استخدم تنسيق الإخراج الدقيق التالي:

الإعداد الأولي وعرض القائمة:

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!

استخدم حلقة while تستمر حتى يُدخل المستخدم الرقم 4. بالنسبة إلى وظيفة Remove Task، تذكّر التحقق من أن رقم المهمة يقع بين 1 وtasks.size() قبل استخدام tasks.erase(tasks.begin() + index). إذا أصبحت القائمة فارغة بعد الإزالة، اطبع "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++ عبر الإنترنت