5a1.1 ספירת איברים בתור
עליכם לממש פונקציה בשם CountQueueElements
אשר מקבלת פרמטר אחד:
- queue - תור גנרי (מסוג Queue) המכיל איברים מכל סוג.
הפונקציה צריכה לחשב ולהחזיר את מספר האיברים בתור.
דרישה חשובה: התור המקורי שקיבלתם כקלט חייב להישאר ללא שינוי (כלומר, עם אותם איברים ובאותו סדר) בתום ביצוע הפונקציה.
דגשים:
- השתמשו במחלקה Queue מהספרייה Unit4.CollectionsLib.
- כדי לשמר את התור המקורי, תצטרכו להשתמש בתור עזר או במבנה נתונים אחר.
- עברו על התור המקורי באמצעות פעולות Remove() ו-Insert().
- אל תשכחו להחזיר את האיברים למקומם בתור המקורי לאחר הספירה.
דוגמאות:
- עבור תור המכיל את המספרים [1, 2, 3, 4, 5] (כאשר 1 בראש התור), הפונקציה תחזיר 5.
- עבור תור ריק [], הפונקציה תחזיר 0.
- עבור תור המכיל את המחרוזות [“apple”, “banana”, “cherry”] (כאשר “apple” בראש התור), הפונקציה תחזיר 3.
5a1.2 סכום איברי תור
עליכם לממש פונקציה בשם SumQueue
אשר מקבלת פרמטר אחד:
- queue - תור של מספרים שלמים (מסוג Queue).
הפונקציה צריכה לחשב ולהחזיר את סכום כל האיברים בתור.
דרישה חשובה: בתום פעולת הפונקציה, התור המקורי שהתקבל כפרמטר צריך להישאר בדיוק כפי שהיה לפני קריאת הפונקציה (כלומר, עם אותם איברים ובאותו סדר).
דגשים:
- יש להשתמש במחלקת Queue מתוך Unit4.CollectionsLib.
- עליכם לכתוב תיעוד (Documentation) מתאים לפונקציה SumQueue.
- עליכם לכתוב תוכנית ראשית (Main method) בתוך קובץ הבדיקות (_stacks_tests.cs) שתבדוק את הפונקציה עם מספר תורים שונים.
דוגמאות:
- עבור התור [1, 2, 3, 4, 5], הפונקציה תחזיר 15. התור יישאר [1, 2, 3, 4, 5].
- עבור התור [10, -5, 7], הפונקציה תחזיר 12. התור יישאר [10, -5, 7].
- עבור תור ריק [], הפונקציה תחזיר 0. התור יישאר ריק.
5a1.3 בדיקת קיום איבר בתור
עליכם לממש פונקציה בשם IsElementInQueue
אשר מקבלת שני פרמטרים:
- queue - תור של מספרים שלמים (מסוג Queue)
- element - מספר שלם לחיפוש בתור
הפונקציה צריכה לבדוק האם element
נמצא בתוך queue
.
דרישות:
- הפונקציה תחזיר true אם האיבר נמצא בתור, ו-false אחרת.
- חשוב מאוד: התור המקורי (queue) חייב להישאר ללא שינוי בתום הפעולה. כלומר, לאחר שהפונקציה מסיימת את ריצתה, התור queue צריך להכיל בדיוק את אותם איברים ובאותו סדר כפי שהיה לפני קריאת הפונקציה.
הערה: יש להשתמש במחלקת Queue
מהספרייה Unit4.CollectionsLib
.
תיעוד
יש לכתוב תיעוד (comments) לפונקציה IsElementInQueue
המתאר את מטרתה, הפרמטרים שהיא מקבלת ואת הערך המוחזר.
תוכנית ראשית
יש לכתוב תוכנית ראשית (Main
method) שתבדוק את הפונקציה IsElementInQueue
על ידי יצירת תורים שונים וקריאה לפונקציה עם איברים שונים. הדפיסו את התוצאות לקונסול.
דוגמאות:
- עבור תור המכיל: [1, 2, 3, 4, 5] והאיבר 3, הפונקציה תחזיר: true
- עבור תור המכיל: [10, 20, 30] והאיבר 5, הפונקציה תחזיר: false
- עבור תור ריק: [] והאיבר 7, הפונקציה תחזיר: false
5a1.4 ספירת הופעות איבר בתור
עליכם לממש פונקציה בשם CountOccurrences
אשר מקבלת שני פרמטרים:
- queue - תור (מסוג Queue
- item - איבר מטיפוס T לחיפוש בתור.
הפונקציה צריכה לחשב ולהחזיר את מספר הפעמים שהאיבר item
מופיע בתור queue
.
דגשים חשובים:
- התור המקורי (queue) צריך להישאר ללא שינוי בתום הפעולה. כלומר, לאחר שהפונקציה מסיימת לרוץ, התור queue צריך להיות זהה למצבו לפני קריאה לפונקציה.
- השתמשו במחלקת Queue מתוך Unit4.CollectionsLib.
תיעוד: יש לכתוב תיעוד מתאים לפונקציה, הכולל תיאור שלה, הפרמטרים שהיא מקבלת והערך שהיא מחזירה.
תוכנית ראשית:
יש לכתוב תוכנית ראשית (בתוך Main
ב-_stacks_tests.cs
) שבודקת את הפונקציה CountOccurrences
עם מקרים שונים.
דוגמאות:
- עבור התור [1, 2, 3, 2, 4] והאיבר 2, הפונקציה תחזיר 2.
- עבור התור [5, 5, 5, 1] והאיבר 5, הפונקציה תחזיר 3.
- עבור התור [10, 20, 30] והאיבר 15, הפונקציה תחזיר 0.
5a1.5 הזזת איברי תור קדימה
עליכם לממש פונקציה בשם ShiftQueueForward
אשר מקבלת פרמטר אחד:
- q - תור (מסוג Queue) המכיל מספרים שלמים.
הפונקציה צריכה להזיז את כל איברי התור צעד אחד קדימה, כך שהאיבר שהיה ראשון בתור יעבור לסופו. הפעולה משנה את התור המקורי.
דגשים:
- התור הנתון מובטח להיות לא ריק.
- השתמשו במחלקת Queue מתוך Unit4.CollectionsLib.
- כתבו תיעוד (comments) לפעולה.
- כתבו תוכנית ראשית (Main method) בתוך קובץ הבדיקות (_stacks_tests.cs) שבודקת את הפונקציה עם מספר תורים לדוגמה.
דוגמאות:
- עבור התור [1, 2, 3, 4], לאחר הפעלת הפעולה, התור יהיה: [2, 3, 4, 1]
- עבור התור [“a”, “b”, “c”], לאחר הפעלת הפעולה, התור יהיה: [“b”, “c”, “a”]
- עבור התור [10], לאחר הפעלת הפעולה, התור יהיה: [10]
5a1.6 הכפלת איברי תור
עליכם לממש פונקציה בשם MultiplyQueueElements
אשר מקבלת שני פרמטרים:
- originalQueue - תור של מספרים שלמים (מסוג Queue)
- factor - מספר שלם המייצג את גורם ההכפלה
הפונקציה צריכה להחזיר תור חדש מסוג Queue
המכיל את כל האיברים מהתור המקורי, כאשר כל אחד מהם מוכפל ב-factor
.
דגשים חשובים:
- התור המקורי (originalQueue) חייב להישאר ללא שינוי בתום הפעולה.
- השתמשו במחלקת Queue מתוך Unit4.CollectionsLib.
- יש לכתוב תיעוד (קומנטים) לפונקציה.
- יש לכתוב תוכנית ראשית (ב-Main ב-_stacks_tests.cs) הבודקת את הפונקציה עם מספר דוגמאות.
דוגמאות:
- עבור התור [1, 2, 3] וגורם הכפלה 2, הפונקציה תחזיר תור חדש [2, 4, 6]. התור המקורי יישאר [1, 2, 3].
- עבור התור [5, 10] וגורם הכפלה 3, הפונקציה תחזיר תור חדש [15, 30]. התור המקורי יישאר [5, 10].
- עבור התור [0, -1, 4] וגורם הכפלה 5, הפונקציה תחזיר תור חדש [0, -5, 20]. התור המקורי יישאר [0, -1, 4].
5a1.7 העתקת תור
עליכם לממש פונקציה בשם CopyQueue
אשר מקבלת פרמטר אחד:
- originalQueue - תור (מסוג Queue) אותו יש להעתיק.
הפונקציה צריכה ליצור ולהחזיר תור חדש המהווה העתק מדויק של originalQueue
.
דרישות:
- התור המקורי (originalQueue) צריך להישאר ללא שינוי בתום הפעולה (כלומר, עם אותם איברים ובאותו סדר).
- עליכם להשתמש במבנה נתונים עזר זמני (לדוגמה, תור נוסף) כדי לבצע את ההעתקה מבלי לפגוע בתור המקורי.
דוגמאות:
- עבור התור: [1, 2, 3], הפונקציה תחזיר תור חדש: [1, 2, 3]. התור המקורי יישאר: [1, 2, 3].
- עבור התור: [‘a’, ‘b’, ‘c’, ‘d’], הפונקציה תחזיר תור חדש: [‘a’, ‘b’, ‘c’, ‘d’]. התור המקורי יישאר: [‘a’, ‘b’, ‘c’, ‘d’].
- עבור תור ריק: [], הפונקציה תחזיר תור ריק חדש: []. התור המקורי יישאר: [].
5a1.8 העתקת K איברים מתוך התור
עליכם לממש פונקציה בשם CopyKElementsFromQueue
אשר מקבלת שני פרמטרים:
- originalQueue - תור של מספרים ממשיים (מסוג Queue)
- k - מספר שלם המציין את כמות האיברים שיש להעתיק
הפונקציה צריכה להחזיר תור חדש המכיל את k
האיברים הראשונים מתוך originalQueue
.
דגשים חשובים:
- התור המקורי (originalQueue) חייב להישאר ללא שינוי לאחר הפעלת הפונקציה.
- הנחה: k אינו גדול ממספר האיברים בתור המקורי.
- יש לכתוב תיעוד (קומנטס) לפונקציה.
חתימת הפונקציה הנדרשת:
public static Queue
דוגמאות:
- עבור התור [1.1, 2.2, 3.3, 4.4, 5.5] ו-K = 3, הפונקציה תחזיר תור חדש: [1.1, 2.2, 3.3]
- עבור התור [10.0, 20.0, 30.0] ו-K = 2, הפונקציה תחזיר תור חדש: [10.0, 20.0]
- עבור התור [7.7] ו-K = 1, הפונקציה תחזיר תור חדש: [7.7]
5a1.9 תור הפרשים
עליכם לממש פונקציה בשם CalculateDifferenceQueue
אשר מקבלת תור של מספרים שלמים בשם Q
.
הפונקציה צריכה לבצע את הפעולות הבאות:
- ליצור תור חדש שיכיל את ההפרשים.
- לעבור על התור המקורי Q בזוגות של איברים.
- עבור כל זוג איברים (איבר ראשון, איבר שני), לחשב את ההפרש כ- איבר_שני - איבר_ראשון.
- להוסיף את ההפרש המחושב לתור החדש.
- לוודא שהתור המקורי Q נשאר ללא שינוי לאחר הפעולה.
הנחות
- מספר האיברים בתור המקורי Q הוא תמיד זוגי.
- התור Q יכיל רק מספרים שלמים.
החזרה
הפונקציה תחזיר את התור החדש המכיל את ההפרשים.
דוגמאות:
עבור התור Q שאיבריו הם: 3, 6, 9, 5, 2, 7 (כאשר 3 הוא ראש התור)הפונקציה תחזיר תור חדש שאיבריו הם: 3, -4, 5(6-3=3, 5-9=-4, 7-2=5)
עבור התור Q שאיבריו הם: 10, 2, 8, 4 (כאשר 10 הוא ראש התור)הפונקציה תחזיר תור חדש שאיבריו הם: -8, -4(2-10=-8, 4-8=-4)
עבור התור Q שאיבריו הם: 1, 1, 1, 1 (כאשר 1 הוא ראש התור)הפונקציה תחזיר תור חדש שאיבריו הם: 0, 0(1-1=0, 1-1=0)
5a1.10 הסרת כפילויות מתור
עליכם לממש פונקציה בשם RemoveDuplicatesFromQueue
אשר מקבלת תור (מסוג Queue
) כפרמטר.
הפונקציה צריכה לבצע את הפעולות הבאות:
- ליצור תור חדש שבו יישמרו האיברים ללא כפילויות.
- לעבור על האיברים בתור המקורי.
- עבור כל איבר בתור המקורי, אם הוא אינו קיים כבר בתור החדש, יש להוסיף אותו לתור החדש.
- יש לשמור על סדר ההופעה הראשון של כל איבר.
- התור המקורי חייב להישאר ללא שינוי בתום הפעולה.
הפונקציה תחזיר את התור החדש המכיל את האיברים ללא כפילויות.
דגשים:
- השתמשו במחלקת Queue מהספרייה Unit4.CollectionsLib.
- ודאו שהתור המקורי נשאר שלם ולא משתנה.
- יש לכתוב תיעוד מתאים לפונקציה.
- יש לכתוב תוכנית ראשית (Main method) שבודקת את הפונקציה עם מספר תרחישים.
דוגמאות:
- עבור התור: [1, 2, 3, 2, 1, 4], הפונקציה תחזיר: [1, 2, 3, 4]
- עבור התור: [‘a’, ‘b’, ‘a’, ‘c’, ‘b’], הפונקציה תחזיר: [‘a’, ‘b’, ‘c’]
- עבור התור: [7, 7, 7, 7], הפונקציה תחזיר: [7]
- עבור תור ריק: [], הפונקציה תחזיר: []