סיכום – מציאת איבר
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 41 מתוך 66.
אתגר
קליתקבלו שני קלטים. הקלט הראשון הוא רשימת מספרים המופרדים בפסיקים (למשל, 10,20,30,40), והקלט השני הוא מספר היעד שיש לחפש. יש לנתח את המספרים המופרדים בפסיקים לתוך וקטור, ואז לחפש את מספר היעד. השתמשו ב־.iter().position() כדי למצוא את האינדקס של מספר היעד, פעולה שמחזירה Option<usize>. טפלו בשני המקרים באמצעות match והדפיסו את ההודעה המתאימה.
דרישות:
- קראו את הקלט הראשון (מספרים המופרדים בפסיקים) והסירו רווחים לבנים
- פצלו את הקלט לפי פסיקים ונתחו כל חלק ל־
i32כדי ליצור וקטור - קראו את הקלט השני (מספר היעד) והסירו רווחים לבנים
- נתחו את מספר היעד ל־
i32 - השתמשו ב־
.iter().position(|&x| x == target)כדי לחפש את היעד בווקטור - השתמשו בביטוי
matchכדי לטפל בערךOptionשמוחזר על ידי.position() - בזרוע
Some(index), הדפיסו:Found at index [index] - בזרוע
None, הדפיסו:Not found
קלט:
- שורה ראשונה: מספרים המופרדים בפסיקים (למשל,
10,20,30,40) - שורה שנייה: מספר היעד שיש לחפש (למשל,
30)
פלט:
- אם היעד נמצא:
Found at index [index] - אם היעד לא נמצא:
Not found
נסו בעצמכם
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// קראו את המספרים המופרדים בפסיקים
let numbers_input = lines.next().unwrap().unwrap().trim().to_string();
// קראו את מספר היעד
let target_input = lines.next().unwrap().unwrap().trim().to_string();
// המירו את המספרים המופרדים בפסיקים לווקטור
let numbers: Vec<i32> = numbers_input
.split(',')
.map(|s| s.trim().parse().unwrap())
.collect();
// המירו את מספר היעד
let target: i32 = target_input.parse().unwrap();
// TODO: כתבו את הקוד שלכם למטה
// השתמשו ב-.iter().position() כדי למצוא את היעד וב-match כדי לטפל בתוצאה
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1זרימת בקרה מתקדמת
ביטוי 'match'התאמה למספר ערכיםהתאמה לטווחיםביטוי 'if let'לולאות כביטוייםסיכום – מנתח פקודות פשוט4קיבוץ נתונים באמצעות מבנים
מהו מבנה?סקירה כללית על מבניםגישה לשדות במבנהמבנים הניתנים לשינוימבנים כפרמטרים של פונקציהמבני טופלסיכום – יצירת מבנה ספר7טיפול בשגיאות באמצעות 'Result'
מהו 'Result'?שימוש ב-'match' עם 'Result'is_ok() ו-is_err()קיצורי דרך: unwrap ו-expectאופרטור סימן השאלה '?'המרת מחרוזות למספריםסיכום - פונקציית חילוק בטוחה10Closures ופונקציות אנונימיות
מהו Closure?הגדרת Closure פשוטClosures עם פרמטריםלכידת הסביבהסיכום – Closure פשוט לחיבור2מבוא לווקטורים
מהו וקטור?יצירת וקטורהוספת איברים באמצעות pushגישה לאיברי וקטורמעבר על וקטורמעבר ניתן לשינויהסרת איבריםסיכום – מעקב בסיסי אחר ניקוד5זוגות מפתח-ערך באמצעות מפות גיבוב
מהי מפת גיבוב?יצירת מפת גיבובהוספת זוגות מפתח-ערךגישה לערכיםמעבר על מפת גיבובעדכון ערךהסרת זוגסיכום – מונה מילים6טיפול בהיעדר באמצעות 'Option'
מהו 'Option'?שימוש ב-'match' עם 'Option'is_some() ו-is_none()חילוץ ערך מתוך 'Option'המתודה expectהגדרת ברירת מחדל: unwrap_orסיכום – מציאת איברתרגלו בעצמכם: קומפיילר Rust אונליין