אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — יסודות (שאלון 899371)מבחן 2021 · קיץ מועד א · שאלה 3כל שאלות המבחן ←
תכנות בסיסימחרוזות

"מחרוזת מיוחדת" היא מחרוזת שבה כל התווים הזהים שבה מופיעים ברצף אחד (כולל מחרוזת ריקה, וכולל מחרוזת ללא תווים זהים).

דוגמאות ל"מחרוזות מיוחדות": "ccabbb", "aaaa", "a", "*&$", "**1zz" (הסימן $ מייצג כאן את סימן הדולר שבשאלון).

דוגמאות למחרוזות שאינן "מחרוזות מיוחדות": "aba", "aabcb", "**33%3".

נתונה המחלקה MyString, ולה תכונה יחידה: str — מחרוזת.

לפניך ממשק חלקי של המחלקה MyString. יש להשתמש בפעולות בממשק המחלקה בלבד, ללא צורך לממש אותן:

כותרת הפעולהתיאור הפעולה
public MyString()פעולה בונה מחרוזת ריקה.
public int countChar(char ch)פעולה המחזירה את מספר המופעים של התו ch במחרוזת str.
public void removeChar(char ch)פעולה המקבלת תו ch ומוחקת מן המחרוזת str את כל המופעים שלו.
public void appendChar(char ch)פעולה המוסיפה לסוף המחרוזת str את התו ch.
public char firstChar()פעולה המחזירה את התו הראשון במחרוזת str.
public boolean isEmpty()פעולה המחזירה true אם המחרוזת str ריקה, אחרת מחזירה false.

לפניך כותרת של הפעולה החיצונית special:

public static MyString special(MyString ms)

הפעולה special מחזירה עצם חדש מטיפוס MyString, שהתכונה שלו, str, היא ה"מחרוזת מיוחדת" המורכבת מכל התווים שבתכונה str של העצם ms.

לדוגמה: בעבור העצם ms שלפניך, שבו מחרוזת רגילה "babca":

הפעולה special תחזיר עצם חדש, שבו "מחרוזת מיוחדת": "bbaac".

הערות:

  • אין צורך לשמור על סדר התווים במחרוזת str בעצם ms.
  • אין חשיבות לסדר התווים בעצם החדש, כל עוד נשמרת ההגדרה של "מחרוזת מיוחדת".

ממש את הפעולה החיצונית special. ממש את הפעולה special באמצעות פעולות ממשק המחלקה MyString בלבד. אין להוסיף פעולות למחלקה MyString, גם לא get ו-set.

public class MyString
{
    private string str;
    // הממשק הנתון (לא לממש, להשתמש בלבד):
    // public MyString()
    // public int CountChar(char ch)
    // public void RemoveChar(char ch)
    // public void AppendChar(char ch)
    // public char FirstChar()
    // public bool IsEmpty()
}

איור נתון-מול-מוחזר: תיבת עצם ms מצביעה על עצם MyString עם התכונה str="babca"; תיבה שנייה מציגה עצם MyString חדש שהתכונה str שלו היא "bbaac" (תוצאת special). איור InDesign נקי (וקטורי, לא סרוק-יד) — שתי תיבות מלבניות עם שדה str מוצג בתוכן, וחץ הצבעה מהמשתנה ms לעצם הראשון.

ms --> [MyString | str: "babca"]

special(ms) --> [MyString | str: "bbaac"]  (עצם חדש, לא אותו עצם)
סעיף א

ממש את הפעולה החיצונית special. יש לממש אותה באמצעות פעולות ממשק המחלקה MyString בלבד — אין להוסיף פעולות למחלקה MyString, גם לא get ו-set.

public static MyString Special(MyString ms)

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

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

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

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