• שאלה מראיון
  • ע"י: מחפש_עבודה1
    שלום לכולם , אשמח אם מישהו יוכל להסביר לי מה הרעיון בשאלה הבאה ומאיזה נושא/תחום היא לקוחה - השאלה היא : יש לך פונק' שנקראת timer(func,time) zz שיודעת להפעיל את הפונק' func בעוד time זמן. אבל אין לה זכרון , כלומר אם תהיה קריאה של הפונק' בזמנים : 0. timer(func1,2) zz 1. timer(func2,3) zz היא תזכור רק את האחרון לעשות . עלייך לממש פונק' myTimer(func,time) zz שתבצע את הפעלת הפונק' כנדרש בזמן הנכון ואת כל הקריאות , לממש את הזכרון כביכול. מה צריך לעשות כדי לגרום לזה לעבוד ? אפשר להניח ש func1 זה מצביע לפונק' . תודה לעוזרים מראש.
  • ע"י: 1_אורח_כללי
    לגבי הקשר שלה ל-RT - באמת שאין לי מושג... אני מניח שאפשר למצוא הקשרים, אבל אני לא יכול להגיד שאני יודע מראש על משהו ספציפי. לגבי איך זה אמור לפעול - אני אנסה להסביר. בוא לרגע נניח שיש לך את מבנה הנתונים הזה של ערמת מינימום שאתה מכניס שם את הפונקציה שקיבלת ואת הזמן שבו הפונקציה אמורה לפעול והיא ממופתחת לפי הזמן (כלומר - אתה יכול לקחת משם את הפונקציה הראשונה שאמורה לפעול). כאשר אתה מקבל פונקציה (במילים אחורת - זה הולך להיות המימוש של myTimer), אתה אמור: 1. להכניס את הפונקציה func שקיבלת למבנה הנתונים עם הזמן שבו היא אמורה לפעול (אתה יכול לחשב את זה למשל ע"י פונקציה שמחזירה לך את הזמן הנוכחי של המחשב ולזמן הזה להוסיף את המשתנה time). 2. להסתכל על הערך הראשון במבנה הנתונים ולהריץ את הפונקציה F (תכף נדון במה בדיוק היא עושה) באותו הזמן (כלומר, להפעיל את timer עם הפונקציה F בעוד (הזמן שראית בראש מבנה הנתונים פחות הזמן הנוכחי של המחשב) שניות). שים לב שבעצם מה שנוצר לנו כאן הוא מצב שבו כאשר אמרו לך להריץ את הפונקציה - אתה בפועל מריץ את הפונקציה F. הפונקציה F פשוט מוציאה את הפונקציה הראשונה בערימת המינימום ומריצה אותה. לאחר שהיא מריצה אותה (או אולי אפילו במקביל) היא מסתכלת על הערך החדש במבנה הנתונים ואז קוראת שוב ל-timer עם עצמה ועם זמן שהוא (הזמן שראית בראש מבנה הנתונים פחות הזמן הנוכחי של המחשב). זה בפועל אומר להריץ את F בפעם הבאה שאיזושהי פונקציה אמורה לפעול. כמובן שלא תקרא שוב ל-timer אם מבנה הנתונים ריק. תנסה להריץ את מה שאמרתי לך על דוגמאות שונות ותראה שזה עובד... (לפחות - אמור לעבוד אם לא פיספסתי כאן משהו) אני מקווה שזה עזר...
  • ע"י: מחפש_עבודה1
    הכוונה שלי הייתה האם השאלה הזאת לקוחה מעולם ה RT ואיך בדיוק אתה מתכוון לדאוג שהפונק' תופעל בזמן שהיא אמורה להיות מופעלת . יש לרשותך רק את הפונק' timer המקורית ואתה צריך לממש איזשהו API עלמנת שזה יעבוד .. לגבי מבנה הנתונים שהצעת , גם אני השתמשתי במבנה הנתונים הזה אבל הדרישה הייתה לחשוב על אלגוריתם שיגרום לזה לעבוד בפועל ולא להגיד שנפעיל את הפונק' בעוד X זמן . שוב תודה על המענה בכל מקרה.
  • ע"י: 1_אורח_כללי
    שחכתי לציין שהפונקציות שאתה מכניס לערימה הן פונקציות שמקבלות את הפונקציה שאתה רוצה להריץ ומה שהן עושות (כשהן רצות) זה להריץ את הפונקציה שהן קיבלו ולאחר מכן לגשת לערימה, להוציא את הפונקציה הראשונה ולדאוג שהיא תרוץ בעוד (זמן ההפעלה שלה פחות הזמן הנוכחי) שניות.
  • ע"י: 1_אורח_כללי
    בגדול, אתה צריך ערימת מינימום שבה אתה שומר את הפונקציות לפי הזמן שבו הם אמורות לפעול. בכל פעם שמתקבלת פונקציה אתה פשוט מוסיף אותה לערימה. לאחר שאתה מוסיף אותה לערימה - אתה מושך מהערימה את הפונקציה העליונה (הראשונה שאמורה לפעול) ומפעיל אותה בעוד (זמן ההפעלה שלה פחות הזמן הנוכחי) שניות. זה הכל.