תרגול מדעי המחשב

הערך המופיע במקום ה-n

מאתגר Java

המשימה

נתונה שרשרת ממוינת של NumCount (מספר וכמות המופעים שלו), כמו בתרגיל
הקודם.

"הערך המופיע במקום ה-n" הוא הערך שיושב במקום ה-n אילו היינו פורשים את
השרשרת לרשימת ערכים מלאה, לפי הסדר, כשכל ערך חוזר count פעמים.

לדוגמה, עבור השרשרת 3(4) → 5(1) → 8(3) → 10(1), הרשימה הפרושה היא:

  3, 3, 3, 3, 5, 8, 8, 8, 10
  1  2  3  4  5  6  7  8  9

ולכן עבור n = 7 התשובה היא 8.

כתוב פעולה valueN שמקבלת את ראש השרשרת ואת n, ומחזירה את הערך במקום ה-n.

הנחיות:
• הספירה מתחילה מ-1.
• אפשר להניח שהערך במקום ה-n קיים בשרשרת.
• אל תבנו רשימה פרושה בזיכרון — צברו את הכמויות תוך כדי מעבר.

```ds:table
{"title":"השרשרת","rows":[["num","count"],["3","4"],["5","1"],["8","3"],["10","1"]]}
```

```ds:array
{"title":"הרשימה הפרושה — האינדקס מתחת, אבל הספירה כאן מתחילה מ-1","items":["3","3","3","3","5","8","8","8","10"]}
```

קוד הפתיחה

class NumCount {
    private int num;
    private int count;
    public NumCount(int num, int count) { this.num = num; this.count = count; }
    public int getNum()   { return num; }
    public int getCount() { return count; }
    public String toString() { return num + " " + count; }
}

public class Main {

    /** מחזירה את הערך המופיע במקום ה-n (הספירה מתחילה מ-1). */
    public static int valueN(Node<NumCount> lst, int n) {
        // כתוב את הפתרון כאן
        return 0;
    }

    // ── עזר, לא חלק מהמשימה ──────────────────────────────────────────
    public static Node<NumCount> build() {
        return new Node<NumCount>(new NumCount(3, 4),
               new Node<NumCount>(new NumCount(5, 1),
               new Node<NumCount>(new NumCount(8, 3),
               new Node<NumCount>(new NumCount(10, 1), null))));
    }

    public static void main(String[] args) {
        Node<NumCount> lst = build();   // 3,3,3,3,5,8,8,8,10

        System.out.println(valueN(lst, 1));   // 3
        System.out.println(valueN(lst, 4));   // 3   (הגבול)
        System.out.println(valueN(lst, 5));   // 5   (הגבול)
        System.out.println(valueN(lst, 7));   // 8
        System.out.println(valueN(lst, 9));   // 10
    }
}

כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.

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