Menu
Coddy logo textTech

הקוד הסופי

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 19 מתוך 66.

challenge icon

אתגר

קל

תקבלו ארבעה קלטים המייצגים תהליך עבודה מלא לניהול רשימת משימות: ראשית, רשימה של משימות התחלתיות המופרדות בפסיקים; שנית, משימה חדשה להוספה; שלישית, מספר המשימה להצגה (אינדקס מבוסס 1); ורביעית, מספר המשימה להסרה (אינדקס מבוסס 1). צרו מנהל רשימת משימות מלא שמבצע את כל הפעולות האלה ומציג את המצב הסופי.

דרישות:

  • קראו את הקלט הראשון, שמכיל תיאורי משימות המופרדים בפסיקים (לדוגמה, Buy groceries,Call dentist,Finish homework)
  • פצלו את המחרוזת לפי פסיקים וצרו וקטור שניתן לשינוי עם המשימות ההתחלתיות האלה
  • קראו את הקלט השני והוסיפו את המשימה החדשה הזאת לווקטור באמצעות .push()
  • קראו את הקלט השלישי והמירו אותו למספר שלם (מספר המשימה להצגה, מבוסס 1)
  • קראו את הקלט הרביעי והמירו אותו למספר שלם (מספר המשימה להסרה, מבוסס 1)
  • הסירו את המשימה שצוינה על ידי המרת האינדקס המבוסס על 1 לאינדקס המבוסס על 0 ושימוש ב-.remove()
  • הדפיסו Total tasks: X כאשר X הוא המספר הסופי של המשימות
  • הדפיסו Viewing task: Y כאשר Y הוא מספר המשימה שהתבקשתם להציג
  • עברו על רשימת המשימות הסופית והדפיסו כל משימה עם המספר שלה (מבוסס 1)
  • עבור המשימה שתואמת למספר ההצגה (לאחר התאמות בעקבות ההסרה), הדפיסו: [X] [task description] (selected)
  • עבור כל שאר המשימות, הדפיסו: [X] [task description]

קלט:

  • שורה ראשונה: תיאורי משימות המופרדים בפסיקים (לדוגמה, Buy groceries,Call dentist,Finish homework)
  • שורה שנייה: משימה חדשה להוספה (לדוגמה, Study for exam)
  • שורה שלישית: מספר שלם המייצג את מספר המשימה להצגה (אינדקס מבוסס 1)
  • שורה רביעית: מספר שלם המייצג את מספר המשימה להסרה (אינדקס מבוסס 1)

פלט:

  • שורה ראשונה: Total tasks: X כאשר X הוא המספר הסופי של המשימות
  • שורה שנייה: Viewing task: Y כאשר Y הוא מספר המשימה שהתבקשתם להציג
  • השורות הבאות: כל משימה עם המספר שלה בתבנית [X] [task description]
  • יש להוסיף (selected) למשימה שנבחרה (התואמת למספר ההצגה)

נסו בעצמכם

use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // קרא את המשימות הראשוניות המופרדות בפסיקים
    let initial_tasks = lines.next().unwrap().unwrap();
    
    // קרא את המשימה החדשה שיש להוסיף
    let new_task = lines.next().unwrap().unwrap();
    
    // קרא את מספר המשימה להצגה (המספור מתחיל ב-1)
    let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // קרא את מספר המשימה להסרה (המספור מתחיל ב-1)
    let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // TODO: כתוב את הקוד שלך למטה
    // 1. פצל את initial_tasks לפי פסיקים וצור וקטור שניתן לשינוי
    // 2. הוסף את new_task לווקטור
    // 3. הסר את המשימה שמספרה remove_number (המר לאינדקס שמתחיל ב-0)
    // 4. הדפס את מספר המשימות הכולל ואת המידע על המשימה המוצגת
    // 5. עבור על הרשימה הסופית והדפס כל משימה
    
}

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

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