במסגרת המלחמה בתאונות הדרכים, הציבו בכבישים ברחבי הארץ מצלמות אוטומטיות (מכמונות) למדידת מהירות כלי הרכב.
בכל כביש מציבים מצלמה אחת לכל היותר. מספר המצלמות שמפוזרים בכבישים עשוי להשתנות מעת לעת עפ"י החלטת המשטרה.
במשטרת התנועה מנהלים מערכת ממוחשבת המרכזת את המידע לגבי מיקום המצלמות, וכן מידע על מכוניות אשר צולמו על ידי המצלמות.
מצלמת מהירות SpeedCamera מיוצגת באמצעות:
- קוד המצלמה
- מספר הכביש שבו היא מוצבת
- המהירות המקסימלית המותרת בכביש זה
- אוסף מספרי כלי הרכב אשר נסעו במהירות גבוהה מהמהירות המותרת בכביש זה.
כתבו את כותרת המחלקה SpeedCamera ואת התכונות שלה. לייצוג אוסף אפשר להשתמש במחלקות Stack, Queue, Node. אפשר להוסיף תכונות נוספות. חובה לתעד את התכונות.
כתבו את הבנאי של המחלקה, המקבל את קוד המצלמה, את מספר הכביש ואת המהירות המותרת. הבנאי מאתחל אוסף מספרי כלי הרכב להיות ריק.
public SpeedCamera(int cameraCode, int roadNumber, int maxSpeed)
כתבו פעולה AddCar המקבלת את מספר המכונית שצולמה ואת המהירות שלה. אם המהירות גבוהה מהמותר בכביש זה, הפעולה תוסיף מכונית זו לאוסף של המכוניות שנסעו מהר מהמותר. (הניחו שבמחלקה SpeedCamera קיימות פעולות get ואין צורך לממש אותן.)
public void AddCar(int carNumber, int speed)
בכל יום מציבה המשטרה 100 מצלמות לכל היותר (ייתכן אף פחות). רשת המצלמות המוצבות בכבישים ביום נתון מיוצגת באמצעות המחלקה SpeedCameraNetwork. כתבו את כותרת המחלקה SpeedCameraNetwork ואת התכונות שלה.
כתבו את הפעולה AddSpeedCamera המוסיפה את מצלמת המהירות sc לרשת המצלמות. אפשר להניח שהמצלמה sc אינה מופיעה ברשת המצלמות.
public void AddSpeedCamera(SpeedCamera sc)
כביש הדורש אכיפה מוגברת הוא כביש שבוצעו בו מעל 200 עבירות מהירות ליום. כתבו פעולה המדפיסה את מספרי הכבישים שבהם יש לבצע אכיפה מוגברת. ציינו באיזו מחלקה יש לכתוב את הפעולה.
public void PrintRoadsNeedingEnforcement()
במשטרה רוצים לבדוק אם רכב מסוים צולם כאשר נסע במהירות גבוהה מהמותר. כתבו פעולה המקבלת מספר רכב. הפעולה תבדוק אם הרכב צולם כאשר נסע במהירות גבוהה מהמותר. אם כן — הפעולה תדפיס את מספר המצלמה אשר צילמה את העבירה ותחזיר true, ואם לא — הפעולה תחזיר false. הערה: אם רכב עשה כמה עבירות יש להדפיס את המספרים של כל המצלמות שצילמו את העבירות.
public bool WasCaught(int carNumber)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.