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

إنهاء الأداة

جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 22 من 56.

challenge icon

التحدي

سهل

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

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

  • سلسلة من خيارات القائمة (أعداد صحيحة: 1 لـ "Add Task"، و 2 لـ "View Tasks"، و 3 لـ "Remove Task"، و 4 لـ "Quit")
  • لإضافة مهمة (الخيار 1): سلسلة نصية تمثل وصف المهمة
  • لإزالة مهمة (الخيار 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: 

لإضافة مهمة (الخيار 1):

Task "[task description]" added successfully!
Total tasks: [number of tasks]

لعرض المهام (الخيار 2) مع وجود مهام:

Your Tasks:
1. [first task]
2. [second task]
...
Total tasks: [number of tasks]

لعرض المهام (الخيار 2) عندما تكون القائمة فارغة:

No tasks available.

لإزالة مهمة (الخيار 3) مع رقم مهمة صالح:

Task "[removed task description]" removed successfully!
Remaining Tasks:
1. [first remaining task]
...
Total tasks: [updated number of tasks]

لإزالة مهمة (الخيار 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. بالنسبة لوظيفة إزالة المهمة، تذكر التحقق من أن رقم المهمة يقع بين 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;
}

جميع دروس Logic & Flow