אתם מתרגלים שאלה מתוך מה"ט אלגוריתמיקה ותכנות — הנדסאי תוכנהמבחן 2021 · קיץ מועד ב · שאלה 12כל שאלות המבחן ←
תכנות מונחה עצמיםמחלקות ואובייקטים

נתונה מחלקה TwoNum הבאה (הקוד המלא מובא כאן; שדותיה פרטיים, ופעולת dif מחזירה את ההפרש בין הספרה הגדולה לספרה הקטנה במספר שהתקבל בבנאי).

class TwoNum
{
  private int num1;
  private int num2;
  public TwoNum(int num)
  {
    if(num<0)num = num*(-1);
    int dig = num % 10;
    this.num1 = dig;
    this.num2 = dig;
    num = num / 10;
    while(num > 0)
    {
      dig = num % 10;
      if(dig < this.num1) this.num1 = dig;
      else
        if (dig> this.num2) this.num2 = dig;
      num=num/10;
    }
  }
  public String toString()
  {
    return this.num1+"-"+this.num2;
  }
  public int dif()
  {
    return this.num2 - this.num1;
  }
}

public static int[] secret(int [] arr)
{
    TwoNum temp = new TwoNum(arr[0]);
    TwoNum temp1 = new TwoNum(arr[0]);
    int ind = 0;
    int ind1 = 0;

    TwoNum cur;
    for(int i = 1; i < arr.length; i++)
    {
      cur = new TwoNum(arr[i]);
      if(cur.dif() < temp.dif())
      {
        temp1 = temp;
        temp = cur;
        ind1 = ind;
        ind = i;
      }
      else
      {
        if(cur.dif() < temp1.dif())
        {
          temp1 = cur;
          ind1 = i;
        }
      }
    }
    int[] res = new int[2];
    res[0] = arr[ind];
    res[1] = arr[ind1];

    return res;
}
סעיף א

עקבו אחרי ביצוע קטע הקוד הבא ורשמו מה יהיה הפלט: TwoNum a = new TwoNum(23176); System.out.println(a); System.out.println(a.dif());

סעיף ב

מהו הערך הגדול ביותר ומהו הערך הקטן ביותר שיכולה להחזיר הפעולה dif()?

סעיף ג

נתונה הפעולה secret הבאה (הקוד המלא מובא כאן). עקבו אחרי ביצוע קטע הקוד הבא ורשמו מה יהיה הפלט: int[] a = {3458,45, 7341, 6, 13579, 86}; int[] b = secret(a); System.out.println(b[0]+" "+b[1]);

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי