סיכום – מסכם ציונים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 66 מתוך 66.
אתגר
קלתקבל כמה קלטים המייצגים ציוני תלמידים. הקלט הראשון הוא מספר המציין כמה ציונים יגיעו אחריו. לאחר מכן תקבל את אותו מספר של ערכי ציונים (אחד בכל שורה). עבד את הציונים האלה וספק סיכום מקיף.
דרישות:
- קרא את הקלט הראשון (מספר הציונים), הסר רווחים לבנים ונתח אותו כ-
i32 - צור וקטור ריק לאחסון הציונים
- השתמש בלולאה כדי לקרוא כל ציון, להסיר רווחים לבנים, לנתח אותו כ-
i32ולהוסיף אותו לווקטור - חשב את ממוצע הציונים (סכום כל הציונים חלקי מספרם)
- מצא את הציון הגבוה ביותר בווקטור
- מצא את הציון הנמוך ביותר בווקטור
- ספור כמה ציונים עוברים (70 ומעלה)
- ספור כמה ציונים נכשלים (מתחת ל-70)
- הדפס את התוצאות בדיוק בפורמט המוצג למטה
פורמט הפלט:
- שורה 1:
Average: X(כאשר X הוא הממוצע כמספר שלם) - שורה 2:
Highest: X(כאשר X הוא הציון הגבוה ביותר) - שורה 3:
Lowest: X(כאשר X הוא הציון הנמוך ביותר) - שורה 4:
Passing: X(כאשר X הוא מספר הציונים העוברים) - שורה 5:
Failing: X(כאשר X הוא מספר הציונים הנכשלים)
קלט:
- שורה ראשונה: מספר הציונים (לדוגמה,
5) - השורות הבאות: ערכי ציונים בודדים (לדוגמה,
85,92,67,78,95)
פלט:
- חמש שורות המציגות את הממוצע, הציון הגבוה ביותר, הציון הנמוך ביותר, מספר הציונים העוברים ומספר הציונים הנכשלים
נסו בעצמכם
use std::io;
fn main() {
// קראו את מספר הציונים
let mut count_input = String::new();
io::stdin().read_line(&mut count_input).expect("Failed to read line");
let count: i32 = count_input.trim().parse().expect("Invalid number");
// צרו וקטור לאחסון הציונים
let mut grades: Vec<i32> = Vec::new();
// קראו כל ציון
for _ in 0..count {
let mut grade_input = String::new();
io::stdin().read_line(&mut grade_input).expect("Failed to read line");
let grade: i32 = grade_input.trim().parse().expect("Invalid number");
grades.push(grade);
}
// TODO: כתבו את הקוד שלכם למטה
// חשבו את הממוצע, מצאו את הציון הגבוה ביותר ואת הנמוך ביותר, וספרו את הציונים העוברים והנכשלים
// הציגו את התוצאות בפורמט הנדרש
// println!("Average: {}", average);
// println!("Highest: {}", highest);
// println!("Lowest: {}", lowest);
// println!("Passing: {}", passing_count);
// println!("Failing: {}", failing_count);
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין