סיכום: מערך של מבנים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 62 מתוך 63.
אתגר
קלצרו תוכנית ב־C לניהול מערכת מלאי מוצרים באמצעות מערך של מבנים. התוכנית שלכם צריכה:
- להגדיר
structבשםProductעם האיברים הבאים:- מערך תווים
nameבגודל 30 - מספר ממשי מסוג float בשם
price - מספר שלם בשם
stock
- מערך תווים
- לכתוב פונקציה בשם
findMostExpensiveש:- מקבלת כפרמטרים מערך של
struct Productומספר שלםsize - מחזירה מספר שלם שמייצג את האינדקס של המוצר שמחירו הגבוה ביותר
- משתמשת בלולאה כדי לעבור על כל המוצרים ולהשוות את המחירים שלהם
- מחזירה את האינדקס של המוצר הראשון שנמצא עם המחיר הגבוה ביותר
- מקבלת כפרמטרים מערך של
- לכתוב פונקציה בשם
calculateTotalValueש:- מקבלת כפרמטרים מערך של
struct Productומספר שלםsize - מחזירה מספר ממשי מסוג float שמייצג את ערך המלאי הכולל
- מחשבת את הערך הכולל על ידי חיבור (מחיר × מלאי) עבור כל מוצר
- מקבלת כפרמטרים מערך של
- לכתוב פונקציה בשם
findLowStockש:- מקבלת כפרמטרים מערך של
struct Product, מספר שלםsizeומספר שלםthreshold - מחזירה מספר שלם שמייצג את מספר המוצרים שהמלאי שלהם נמוך מסף זה
- משתמשת בלולאה כדי לספור מוצרים שבהם המלאי קטן מערך הסף
- מקבלת כפרמטרים מערך של
- בפונקציה הראשית:
- ליצור מערך של 3 מבנים מסוג
struct Productבשםinventory - לקרוא קלט עבור כל מוצר בסדר הזה: שם, מחיר, מלאי
- למלא את המערך בנתוני הקלט
- להדפיס את המידע של כל מוצר בדיוק בפורמט הזה:
Product [index]: [name] - Price: [price], Stock: [stock] - לקרוא לפונקציה
findMostExpensiveולהדפיס את התוצאה בדיוק בפורמט הזה:Most expensive product: [name] - לקרוא לפונקציה
calculateTotalValueולהדפיס את התוצאה עם 2 ספרות אחרי הנקודה העשרונית בדיוק בפורמט הזה:Total inventory value: [total_value] - לקרוא מספר שלם שמייצג את סף המלאי הנמוך
- לקרוא לפונקציה
findLowStockעם הסף ולהדפיס את התוצאה בדיוק בפורמט הזה:Products with low stock: [count] - לבדוק אם המלאי של המוצר היקר ביותר גדול מ־10:
- אם כן: להדפיס
Most expensive product is well stocked - אם לא: להדפיס
Most expensive product needs restocking
- אם כן: להדפיס
- ליצור מערך של 3 מבנים מסוג
האתגר הזה בודק את היכולת שלכם לעבוד עם מערכים של מבנים, לממש פונקציות שמעבדות מערכי מבנים ולבצע חישובים והשוואות שונות על נתונים מובְנים. תתרגלו אינדוקס של מערכים עם מבנים, תכנון פונקציות לעיבוד נתונים ושילוב של פעולות שונות לניתוח מידע על מלאי.
נסו בעצמכם
#include <stdio.h>
#include <string.h>
// TODO: הגדירו כאן את המבנה Product
// TODO: ממשו כאן את הפונקציה findMostExpensive
// TODO: ממשו כאן את הפונקציה calculateTotalValue
// TODO: ממשו כאן את הפונקציה findLowStock
int main() {
// צרו מערך של 3 מוצרים
struct Product inventory[3];
// קראו קלט עבור כל מוצר
for (int i = 0; i < 3; i++) {
scanf("%s", inventory[i].name);
scanf("%f", &inventory[i].price);
scanf("%d", &inventory[i].stock);
}
// TODO: הדפיסו את המידע של כל מוצר
// TODO: מצאו והדפיסו את המוצר היקר ביותר
// TODO: חשבו והדפיסו את הערך הכולל של המלאי
// קראו את סף המלאי הנמוך
int threshold;
scanf("%d", &threshold);
// TODO: מצאו והדפיסו מוצרים שהמלאי שלהם נמוך
// TODO: בדקו אם המוצר היקר ביותר זמין בכמות מספקת במלאי
return 0;
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיותתרגלו בעצמכם: קומפיילר C אונליין