המשימה
נתונה שרשרת ממוינת של 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 קיים בשרשרת. • אל תבנו רשימה פרושה בזיכרון — צברו את הכמויות תוך כדי מעבר. [טבלה] [מערך]
קוד הפתיחה
using System;
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 override string ToString() { return num + " " + count; }
}
class Program {
/** מחזירה את הערך המופיע במקום ה-n (הספירה מתחילה מ-1). */
static int ValueN(Node<NumCount> lst, int n) {
// כתוב את הפתרון כאן
return 0;
}
// ── עזר, לא חלק מהמשימה ──────────────────────────────────────────
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))));
}
static void Main() {
Node<NumCount> lst = Build(); // 3,3,3,3,5,8,8,8,10
Console.WriteLine(ValueN(lst, 1)); // 3
Console.WriteLine(ValueN(lst, 4)); // 3 (הגבול)
Console.WriteLine(ValueN(lst, 5)); // 5 (הגבול)
Console.WriteLine(ValueN(lst, 7)); // 8
Console.WriteLine(ValueN(lst, 9)); // 10
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.