תרגול 9.1 תרגול בסיסי במערך


תרגול בסיסי במערך

את שאלות 9.1.1ו- 9.1.2 יש לפתור בתוך פרוייקט שתורידו מגיט האב שבאמצעותו תבדקו את השאלות. הקישור להעתקה הוא כאן וההוראות כאן.

9.1.1 חישוב ממוצע ציונים מעל הממוצע ועוד

יש לכתוב תוכנית הקולטת 10 ציונים של תלמיד ומכניסה למערך.
על התוכנית לחשב ולהדפיס:

א. ממוצע ציונים עם בדיוק 2 ספרות אחרי הנקודה. למשל 90.50

ב. רשימת הציונים בהם הציונים הם מעל הממוצע

ג. רשימת הציונים בהם הציון קטן או שווה ל-60. אם אין ציונים קטנים מ-60 אין להדפיס שורה כזו.

ד. אם ממוצע הציונים מעל 90 יש להדפיס את ההודעה “Excellent”

דוגמא לפלט:

Average: 93.50 
Above Average: 95, 95, 95, 100, 100, 100, 100, 100, 100, 
Below 60:  50,
Excellent

בקשת הקלט תהיה בדיוק: Console.WriteLine("Enter grade:");


לפני 9.1.2 נתרגל משאלות של רוני רובן

השאלות והגיטים שלו כאן קישור לדף השאלות קישור לגיט קישור לגיט נוסף


9.1.2 קליטת שמות יחודיים

יש לכתוב תוכנית הקולטת 8 שמות של תלמידים ומוסיפה אותם לרשימת תלמידי הכיתה באופן הבא: יש לקלוט שם של תלמיד חדש הרוצה להצטרף לכיתה יש לבדוק אם שם זה כבר מופיע בכיתה. במידה ששם זה לא קיים יש להוסיף שם זה לכיתה. במידה שכבר קיים תלמיד עם שם זהה יש להדפיס הודעה “לא נוכל לשבצך בכיתה זו”

הערה: הודעות הפלט חייבות להיות בדיוק

  • Console.WriteLine("Enter a name:");
  • Console.WriteLine("We cannot assign you to this class");

הפתרונות ל-9.1.1 9.1.2 כאן


9.1.3 בר מצווה

אתמול נערכה חגיגת בר המצווה של דוד. לחגיגה הגיעו 10 חברים וחברות. דוד בנה קוד ובו רשימות סכומי הכספים שקיבל כמתנה. יש לכתוב תוכנית הקולטת את סכומי הכספים שקיבל דוד. את סכומי הכספים יש להציב במערך בשם presents.


על התוכנית לחשב ולהדפיס:

א. סה”כ סכום כל המתנות שהתקבל

ב. סכום מתנה ממוצע

ג. כמה סכומי מתנות קיבל מעל סכום המתנה הממוצעת


9.1.4 סכום במקומות זוגיים / אי זוגיים

יש לכתוב פונק הבודקת ומציגה הודעה האם סכום הערכים במקומות הזוגיים במערך שווה לסכום הערכים במקומות האי זוגיים במערך לדוגמא עבור המערך [22,33,11,0] הפונקציה תחזיר true


9.1.5 האותיות החסרות

נתון מערך המכיל אותיות מה-abc קטנות וגדולות. יש לכתוב תוכנית המציגה כפלט את כל האותיות שלא נמצאות במערך.


9.1.6 ספירה ומיקומים

נתון מערך חד מימדי המכיל שני ערכים בלבד השונים זה מזה. (אפשר לאתחל מערך מראש עם הספרות = השתמשו בסוגריים מסולסלים) ידוע שאורך המערך אי זוגי.

א. יש לכתוב פונקציה המקבלת מערך כזה, בודקת ומדפיסה את מיקומי האיברים של האיבר שמופיע יותר פעמים במערך. אין צורך לבדוק את תקינות הקלט.

ב. יש לכתוב תוכנית ראשית המזמנת את הפונקציה לבדיקת המערך והדפסת הפלט. לדוגמה: עבור המערך הבא: {1, 6, 1, 6, 6, 6, 1} יודפס: 6 הינו המספר השכיח ומיקומיו במערך הם : 5 3 2 1

9.1.7 הזזות

יש לכתוב תוכנית המזיזה את הערכים במערך חד מימדי מקום אחד ימינה, כאשר האיבר במקום האחרון עובר למקום הראשון. לדוגמה עבור המערך { arr = {1,2,3,4,5 יתבצע שינוי ויהיה { arr = {5,1,2,3,4

הזזה ימינה ב-k מקומות 9.1.7b

כמו השאלה שלעיל, אבל גלגול ימינה של k איברים

לפני: [1,2,3,4,5]

אחרי הזזה ציקלית 2 ימינה: [4,5,1,2,3]

פתרון
public static void Q917(int[] arr, int k)
{   // Given an array of integers, rotate the array
    // to the right by k steps, where k is non-negative.
    if (arr.Length <= k)
        return;

    int[] kNums = new int[k]; // מכיל את האחרונים שעתידים להידרס
    for (int i = 1; i <= k; i++)
        kNums[^i] = arr[^i]; // הולך ישר ל-3 האחרונים

    for (int i = arr.Length - 1-k; i >= 0; i--)
        arr[i+k] = arr[i]; // מזיז את כל השאר ימינה

    for (int i = 0; i < k; i++)
        arr[i] = kNums[i]; // מכניס את ה-3 האחרונים למקומם החדש
}

פתרון ללא שימוש במערך עזר

9.1.8 פילטר

א. יש לכתוב פונקציה המקבלת מערך arr, ומדפיסה את מצייני (האינדקסים) כל התאים במערך שערכם קטן מהערך בתא העוקב להם.

ב. כתוב תוכנית המייצרת מערך בגודל 20, מגרילה אליו ספרות, מדפיסה אותו, ומזמנת את הפונקציה מסעיף א’. ג. מה מספר הפלטים המקסימלי שיכול להיות בסעיף ב’? נמק.

9.1.9 כמה פעמים

כתבו פונקציה המקבלת מערך ומחזירה כמה פעמים מופיע האיבר הגדול ביותר. הוסף תוכנית ראשית שמאתחלת מערך, מזמנת את הפונקציה ומדפיסה את התוצאה שהתקבלה.

9.1.10

מערך יקרא מערך מאוזן אם מספר האיברים שערכם מעל אפס שווה למספר האיברים שערכם מתחת לאפס. כתבו פעולה (בשם IsBalance) המקבלת מערך מספרים שלמים ומחזירה true אם המערך מאוזן, או false אם המערך אינו מאוזן.

9.1.11 חשבון מילולי

כתבו פונקציה ב-C# בשם MathInWords המקבלת מחרוזת המתארת פעולה מתמטית בשפה האנגלית (חיבור או חיסור) ומחזירה את התוצאה במילים באנגלית.

פרמטרים:

  • input (type: string) – מחרוזת בפורמט <Number> <operator> <Number> כאשר <operator> הוא plus או minus (לא רגיש לרישיות).

דוגמאות לשימוש:

Console.WriteLine(MathInWords("One plus one"));   // Output: "Two"
Console.WriteLine(MathInWords("zero Plus one")); // Output: "One"
Console.WriteLine(MathInWords("one minus One")); // Output: "Zero"

הערות:

  • הפעולות המתמטיות הנתמכות הן רק חיבור (plus) וחיסור (minus).
  • המספרים בקלט יהיו בתחום 0–2.
  • תחביר הקלט עלול לכלול רישיות שונה (e.g., One, one, ONE), עליכם להתייחס לזה באופן שאינו רגיש לרישיות (.ToLower() or .ToUpper() לפני שמתחילים לעבוד).
  • התוצאה תופק במילים באנגלית, כאשר התו הראשון של המחרוזת צריך להיות אות גדולה (Capitalized).

קישור לפתרון

קישורים

⬅ עברו לרשימת שקפי תרגול במערכים במצגת קמפוס

⬅ עברו לתרגול 9.2 - מערכים - שאלות ב- CodeWars

עברו לרשימת שקפי תרגול במערכים במצגת קמפוס]