Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Studies

תרגיל - מימוש מבנה נתונים

כעת רכשנו מספיק כלים בשביל לממש מבנה נתונים פשוט. בתרגיל נכתוב מערכת שמנהלת בית קולנוע - נוכל למכור כרטיסים, להוסיף צופים, להקרין סרטים לפי לוח זמנים וכו׳.

כל צופה שמזמין כרטיס מזין את הפרטים הבאים במערכת:

  • תעודת זהות - מספר 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 תשחרר את כל הזכרון הדינמי שהוקצה ותסיים את ריצת הקולנוע.

פתרון