ציוני תלמידים שמורים בתור אחד (marks) כאשר קבוצת הציונים של כל תלמיד מופרדת מהקבוצה שאחריה בערך 1-. arrangeData/ArrangeData בונה תור שני (tests) עם מספר הציונים (=מספר הבחינות) של כל תלמיד, ובמקביל מנקה את marks מערכי ההפרדה. לדוגמה: marks לפני = 80,90,100,-1,75,96,-1,100,100,97,96,-1,-1,88,94,-1 (חמישה תלמידים, כולל תלמיד רביעי ללא ציונים כלל); marks אחרי = 80,90,100,75,96,100,100,97,96,88,94; tests = 3,2,4,0,2.
ציוני תלמידים שמורים בתור אחד (marks) כאשר קבוצת הציונים של כל תלמיד מופרדת מהקבוצה שאחריה בערך 1-. arrangeData/ArrangeData בונה תור שני (tests) עם מספר הציונים (=מספר הבחינות) של כל תלמיד, ובמקביל מנקה את marks מערכי ההפרדה. לדוגמה: marks לפני = 80,90,100,-1,75,96,-1,100,100,97,96,-1,-1,88,94,-1 (חמישה תלמידים, כולל תלמיד רביעי ללא ציונים כלל); marks אחרי = 80,90,100,75,96,100,100,97,96,88,94; tests = 3,2,4,0,2.
תור הציונים marks לדוגמה, לפני העדכון (מראש התור לסופו). ה-1- מפריד בין קבוצות הציונים של תלמיד לתלמיד; ריבוע אפור = תא הפרדה.
ראש התור → 80 | 90 | 100 | -1 | 75 | 96 | -1 | 100 | 100 | 97 | 96 | -1 | -1 | 88 | 94 | -1 ← סוף התור
תור הציונים marks לדוגמה, אחרי העדכון (ללא ערכי ההפרדה) — הפלט של arrangeData דרך הפרמטר עצמו.
ראש התור → 80 | 90 | 100 | 75 | 96 | 100 | 100 | 97 | 96 | 88 | 94 ← סוף התור
תור הבחינות tests לדוגמה — מספר הבחינות שהשלים כל תלמיד, לפי אותו סדר תלמידים (זהו הערך המוחזר מ-arrangeData).
ראש התור → 3 | 2 | 4 | 0 | 2 ← סוף התור
כתבו פעולה בשם ArrangeData המקבלת תור ציונים ומחזירה תור חדש המכיל עבור כל אחד מהתלמידים את מספר הבחינות שהשלים. הפעולה גם צריכה לעדכן את תור הציונים כך שיכיל רק ציונים ללא ערך ההפרדה 1-. כותרת הפעולה: public static Queue<int> ArrangeData(Queue<int> marks)
מהי סיבוכיות הפעולה ArrangeData שכתבתם בסעיף א'? הסבירו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.