Menu
Coddy logo textTech

סינון לפי מצב ההשלמה

חלק מהיחידה יסודות במסלול ה-PHP של Coddy. שיעור 59 מתוך 71.

challenge icon

אתגר

קל

בשיעור הקודם הסרת משימה מהרשימה. עכשיו הוסף את האפשרות לסנן משימות לפי סטטוס ההשלמה שלהן.

קרא ארבע שורות קלט עבור תיאורי המשימות (שלוש משימות ראשוניות ועוד משימה חדשה אחת). לאחר מכן קרא קלט חמישי: מספר שלם שמייצג את האינדקס של המשימה שיש לסמן כהושלמה. קרא קלט שישי: מספר שלם שמייצג את האינדקס של המשימה שיש להסיר. לבסוף, קרא קלט שביעי: מחרוזת שהיא completed או pending כדי לסנן את המשימות.

לאחר יצירת המערך $todos, סימון המשימה שצוינה כהושלמה והסרת המשימה באינדקס הנתון, סנן את המשימות שנותרו על סמך הקלט של המסנן:

  • אם המסנן הוא completed, הצג רק משימות שבהן "completed" הוא true
  • אם המסנן הוא pending, הצג רק משימות שבהן "completed" הוא false

עבור על המשימות שנותרו והדפס רק את אלה שתואמות למסנן, באותו פורמט:

  • אם המשימה הושלמה: - [task description] (Done)
  • אם המשימה ממתינה: - [task description] (Pending)

הדפס כל משימה תואמת בשורה נפרדת.

דוגמה:

אם הקלט הוא Buy groceries, Walk the dog, Finish homework, Call mom, 1, 2 ו-completed, הפלט אמור להיות:

- Walk the dog (Done)

אם הקלט הוא Buy groceries, Walk the dog, Finish homework, Call mom, 1, 2 ו-pending, הפלט אמור להיות:

- Buy groceries (Pending)
- Call mom (Pending)

נסו בעצמכם

<?php
// Read three task descriptions
$task1 = trim(fgets(STDIN));
$task2 = trim(fgets(STDIN));
$task3 = trim(fgets(STDIN));

// Read the new task to add
$newTask = trim(fgets(STDIN));

// Read the index of the task to mark as complete
$completeIndex = (int)trim(fgets(STDIN));

// Read the index of the task to remove
$removeIndex = (int)trim(fgets(STDIN));

// Create a $todos array containing three task arrays
// Each task should be an associative array with "task" and "completed" keys
$todos = [
    ["task" => $task1, "completed" => false],
    ["task" => $task2, "completed" => false],
    ["task" => $task3, "completed" => false]
];

// Add the new task to the end of the array
$todos[] = ["task" => $newTask, "completed" => false];

// Mark the task at the specified index as complete
$todos[$completeIndex]["completed"] = true;

// Remove the task at the specified removal index
array_splice($todos, $removeIndex, 1);

// Loop through the array and print each task in the formatted list
foreach ($todos as $todo) {
    if ($todo["completed"]) {
        echo "- " . $todo["task"] . " (Done)\n";
    } else {
        echo "- " . $todo["task"] . " (Pending)\n";
    }
}
?>

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר PHP אונליין