הסרת משימה
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 18 מתוך 66.
אתגר
קלתקבלו שלושה קלטים: הראשון הוא רשימת משימות קיימות המופרדות בפסיקים; השני הוא מספר המשימה להסרה (אינדקס שמתחיל ב־1); והשלישי הוא משימה חדשה להוספה לאחר ההסרה. קראו את כל הקלטים, צרו מערך מהמשימות, הסירו את המשימה שצוינה, הוסיפו את המשימה החדשה והציגו את רשימת המשימות המעודכנת.
דרישות:
- קראו את הקלט הראשון, שמכיל תיאורי משימות המופרדים בפסיקים (למשל,
Buy groceries,Call dentist,Finish homework) - פצלו את המחרוזת לפי פסיקים כדי לקבל משימות נפרדות
- צרו מערך שניתן לשינוי והוסיפו אליו כל משימה
- קראו את הקלט השני והמירו אותו למספר שלם (מספר המשימה להסרה, באינדקס שמתחיל ב־1)
- המירו את האינדקס שמתחיל ב־1 לאינדקס שמתחיל ב־0 והשתמשו ב־
.remove()כדי להסיר את המשימה שבאינדקס הזה - קראו את הקלט השלישי, שמכיל משימה חדשה להוספה
- השתמשו ב־
.push()כדי להוסיף את המשימה החדשה למערך - הדפיסו את המספר הכולל של המשימות בפורמט:
Total tasks: X - הדפיסו כל משימה בשורה נפרדת בפורמט:
Task: [task description]
קלט:
- שורה ראשונה: תיאורי משימות המופרדים בפסיקים (למשל,
Buy groceries,Call dentist,Finish homework) - שורה שנייה: מספר שלם שמייצג את מספר המשימה להסרה (אינדקס שמתחיל ב־1)
- שורה שלישית: משימה חדשה להוספה (למשל,
Study for exam)
פלט:
- שורה ראשונה:
Total tasks: Xכאשר X הוא המספר הכולל של המשימות לאחר ההסרה וההוספה - השורות הבאות: כל משימה מודפסת בתבנית
Task: [task description]
נסו בעצמכם
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// קראו את המשימות המופרדות בפסיקים
let tasks_input = lines.next().unwrap().unwrap();
// קראו את מספר המשימה שיש להסיר (אינדקסים המתחילים ב-1)
let task_to_remove = lines.next().unwrap().unwrap();
let task_number: usize = task_to_remove.trim().parse().unwrap();
// קראו את המשימה החדשה שיש להוסיף
let new_task = lines.next().unwrap().unwrap();
// TODO: כתבו את הקוד שלכם למטה
// פצלו את tasks_input לפי פסיקים וצרו וקטור שניתן לשינוי
// הסירו את המשימה באינדקס שצוין (המירו מאינדקס המתחיל ב-1 לאינדקס המתחיל ב-0)
// הוסיפו את המשימה החדשה לווקטור
// הציגו את התוצאות
// הדפיסו את מספר המשימות הכולל בפורמט: Total tasks: X
// הדפיסו כל משימה בפורמט: Task: [תיאור המשימה]
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1זרימת בקרה מתקדמת
ביטוי 'match'התאמה למספר ערכיםהתאמה לטווחיםביטוי 'if let'לולאות כביטוייםסיכום – מנתח פקודות פשוט4קיבוץ נתונים באמצעות מבנים
מהו מבנה?סקירה כללית על מבניםגישה לשדות במבנהמבנים הניתנים לשינוימבנים כפרמטרים של פונקציהמבני טופלסיכום – יצירת מבנה ספר7טיפול בשגיאות באמצעות 'Result'
מהו 'Result'?שימוש ב-'match' עם 'Result'is_ok() ו-is_err()קיצורי דרך: unwrap ו-expectאופרטור סימן השאלה '?'המרת מחרוזות למספריםסיכום - פונקציית חילוק בטוחה10Closures ופונקציות אנונימיות
מהו Closure?הגדרת Closure פשוטClosures עם פרמטריםלכידת הסביבהסיכום – Closure פשוט לחיבור2מבוא לווקטורים
מהו וקטור?יצירת וקטורהוספת איברים באמצעות pushגישה לאיברי וקטורמעבר על וקטורמעבר ניתן לשינויהסרת איבריםסיכום – מעקב בסיסי אחר ניקוד5זוגות מפתח-ערך באמצעות מפות גיבוב
מהי מפת גיבוב?יצירת מפת גיבובהוספת זוגות מפתח-ערךגישה לערכיםמעבר על מפת גיבובעדכון ערךהסרת זוגסיכום – מונה מיליםתרגלו בעצמכם: קומפיילר Rust אונליין