Menu
Coddy logo textTech

השלמת הכלי

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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++ אונליין