תרגיל - מימוש מבנה נתונים
כעת רכשנו מספיק כלים בשביל לממש מבנה נתונים פשוט. בתרגיל נכתוב מערכת שמנהלת בית קולנוע - נוכל למכור כרטיסים, להוסיף צופים, להקרין סרטים לפי לוח זמנים וכו׳.
כל צופה שמזמין כרטיס מזין את הפרטים הבאים במערכת:
- תעודת זהות - מספר
intחיובי בין0ל-999, כולל. - שם - מחרוזת
*charשאורכה לכל היותרMAX_NAME_LEN, קבוע שערכו100. - חבילת הטבות - מספר
intשערכו מספר בין0ל-2. כל צופה מקבל אוכל ושתייה במזנון לפי חבילת ההטבות שבחר -0לא מקבל כלום,1מקבל פופקורן ו-2מקבל פופקורן ושתייה.
על המערכת להשתמש ב-id של כל צופה כמזהה למבנה הנתונים:
char* names;
int* package;
לדוגמא, מגיע צופה בשם "John" עם תעודת זהות 534 ורוכש חבילת הטבות 1. הקולנוע מעניק לו את המזהה 0, ובהתאמה מעדכן את מבני הנתונים:
int id = 534;
names[id ] == "John";
package[id] = 1;
דרישות למימוש
בתרגיל יש לממש את הפונקציות הבאות:
void theater_init(char** names, int* packages);
bool insert_viewer(char** names, int* packages);
void theater_close(char** names, int* packages);
שיפעלו לפי הדרישות הבאות:
theater_initתאתחל את מבנה הנתונים בכל דרך לבחירתכם.insert_viewerתקבל את מבנה הנתונים ותקרא עםscanfאת תעודת הזהות, השם וחבילת ההטבות של צופה חדש אחד, עםEnterביניהם. הפונקציה תחזירtrueהפונקציה תוודא שהערכים שהצופה החדש מכניס חוקיים, ולא תכניס אותו אם לא. הפונקציה לא תכניס צופה חדש אם אין לו מקום בקולנוע. הפונקציה תחזירtrueאם הצליחה להכניס את הצופה, ו-falseאחרת.theater_closeתשחרר את כל הזכרון הדינמי שהוקצה ותסיים את ריצת הקולנוע.
פתרון