עקב התפרצות מגפת הקורונה החליט משרד הבריאות להקים מערכת לטיפול שוטף במצב התחלואה במדינה. הוגדרה המחלקה עיר בקורונה CityK בעלת שלוש תכונות: name – שם העיר מטיפוס מחרוזת; numOfResidents – מספר שלם המייצג את מספר התושבים בעיר; numOfPatients – מספר שלם המייצג את מספר החולים בעיר. (הנח כי קיימות פעולה בונה המקבלת את ערכי התכונות כפרמטרים, פעולות אחזור get() וקביעה set().)
עקב התפרצות מגפת הקורונה החליט משרד הבריאות להקים מערכת לטיפול שוטף במצב התחלואה במדינה. הוגדרה המחלקה עיר בקורונה CityK בעלת שלוש תכונות: name – שם העיר מטיפוס מחרוזת; numOfResidents – מספר שלם המייצג את מספר התושבים בעיר; numOfPatients – מספר שלם המייצג את מספר החולים בעיר. (הנח כי קיימות פעולה בונה המקבלת את ערכי התכונות כפרמטרים, פעולות אחזור get() וקביעה set().)
```csharp
public class CountryStatus
{
private string date;
private CityK[] cities;
private int nCity;
}
כתוב פעולה פנימית המקבלת עיר בקורונה, ומחזירה true אם לעיר הנוכחית ולעיר המתקבלת כפרמטר יש מספר חולים זהה, או false אם המספר שונה.
public bool SameNumOfPatients(CityK other)
משרד הבריאות הגדיר את "שיטת הרמזור" שלפיה כל עיר מסומנת בצבע מסוים בהתאם לרמת התחלואה: עיר ירוקה היא עיר שיש בה פחות מ-5% חולים, עיר כתומה – 5%-15% חולים, ועיר אדומה – מעל 15% חולים. כתוב פעולה פנימית המחזירה את קטגוריית העיר על-פי שיטת הרמזור. על הפעולה להחזיר אחת מהמחרוזות red/orange/green בהתאם למספרי התושבים והחולים. שם הפעולה: public String getCityColor()
public string GetCityColor()
הוגדרה המחלקה CountryStatus בעלת שלוש תכונות: date – תאריך עדכון המצב, מסוג מחרוזת; cities – מערך עצמים מסוג CityK, גודל המערך הוא 100; nCity – מספר שלם המייצג כמה ערים יש במערך.
public class CountryStatus
{
private String date;
private CityK[] cities;
private int nCity;
}
כתוב פעולה בונה במחלקה CountryStatus, המאתחלת מערך ערים ריק. הפעולה מקבלת תאריך עדכון כפרמטר.
public CountryStatus(string date)
כתוב פעולה פנימית בוליאנית בשם addCity המקבלת שם של עיר, מספר תושבים ואת מספר החולים בה, ומוסיפה עיר זו למערך ערים. הפעולה מחזירה true אם ההוספה הצליחה, או false אם הפעולה לא הצליחה. אפשר להניח שהעיר עוד לא קיימת במערך ואין צורך לבדוק זאת.
public bool AddCity(string name, int numOfResidents, int numOfPatients)
כתוב פעולה פנימית המקבלת כפרמטר אחת מהמחרוזות red/orange/green ("צבע העיר" לפי שיטת הרמזור) ומחזירה מערך חדש הכולל שמות הערים לפי ה"צבע" המבוקש. עליך להיעזר בפעולה getCityColor שכתבת בסעיף א'.
public string[] GetCitiesByColor(string color)
משרד הבריאות מעוניין לבדוק אם חל שינוי במצב לאחר סגר כללי. כתוב פעולה חיצונית המקבלת שני עצמים cs1, cs2 מסוג CountryStatus ומדפיסה שמות של ערים שהיו בסטטוס "אדום" (red) ב-cs1 ואת הערים ששינו את הסטטוס ב-cs2. הערות: 1. שים לב שמספר הערים וסדר הופעתן ב-cs1 ו-cs2 לא בהכרח זהים. 2. אפשר להניח שבשתי המחלקות קיימות פעולות get/set. אם השתמשת בפעולות נוספות, עליך לכתוב את הפעולות!
public static void PrintChangedFromRed(CountryStatus cs1, CountryStatus cs2)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.