אתם מתרגלים שאלה מתוך מה"ט אלגוריתמיקה ותכנות — הנדסאי תוכנהמבחן 2024 · אביב מועד ב · שאלה 11כל שאלות המבחן ←
תכנות בסיסימחרוזות

סעיף א

נתונה מחרוזת s="aMrAdDYrM". עקבו בעזרת טבלת המעקב אחרי זימון הפעולה Why(s) ורשמו מהי תוצאת הזימון.

public static bool Why(string s)
{
  while(s.Length > 1)
   {
     if(s[0]<'A' || s[0]>'Z')
       {
         s = s.Substring(1);
       }
     else
       if(s[s.Length-1]<'A' || s[s.Length-1]>'Z')
         {
          s = s.Substring(0,s.Length-1);
         }
       else
         {
          if(s[0]!=s[s.Length-1]) return false;
          s = s.Substring(1, s.Length-2);
         }
   }
  return true;
}
סעיף ב

נתונה הפעולה What הבאה:

public static bool What(string s)
{
   while(s.Length > 1)
     {
         if(s[0] != s[s.Length-1]) return false;
         s = s.Substring(1, s.Length-1);
     }
   return true;
}

תנו דוגמה למחרוזת s באורך שישה תווים כך שזימון What(s) יחזיר ערך true.

סעיף ג

נתונה הפעולה Where הבאה. הפעולה משתמשת בפעולה What:

public static bool Where(string s)
{
  string str = "";
  for(int i = 0; i < s.Length; i++)
         if(s[i]>='A' && s[i]<='Z') str += s[i];
  return What(str);
}

האם הפעולה Where שקולה (מבצעת בדיוק אותו הדבר) לפעולה Why? אם כן, הסבירו מה מבצעות שתי הפעולות באופן כללי, ולא – תנו דוגמה של מחרוזת s שעבורה תוצאות הזימונים Why(s) ו-Where(s) יהיו שונות.

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

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

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

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