אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2017 · קיץ מועד א · שאלה 11כל שאלות המבחן ←
מודלים חישובייםשפות פורמליות

שאלה זו כוללת שני סעיפים א-ב שאין קשר ביניהם, ויש לענות על שניהם.

סעיף א מתייחס לפעולה הנתונה foo/Foo (מודפסת ב-code_context), הסופרת את מספר המופעים של 'a' (cntrA) ושל 'c' (cntrC) במחרוזת str, ומחזירה true אם cntrA זוגי וגם cntrC מתחלק ב-3.

סעיף ב אינו קשור לפעולה הנתונה: יש לבנות אוטומט סופי דטרמיניסטי שלא יקבל אף מילה מעל האלפבית {a,b} המכילה לפחות מופע אחד של אחד משלושת הצירופים: ababa, aaba, bbb (כלומר מקבל בדיוק את המילים שנמנעות משלושת הצירופים האלה).

bool Foo(string str) {
    int cntrA = 0;
    int cntrC = 0;
    for (int i = 0; i < str.Length; i++) {
        if (str[i] == 'a') cntrA++;
        if (str[i] == 'c') cntrC++;
    }
    if ((cntrA % 2 == 0) &&
        (cntrC % 3 == 0))
        return true;
    return false;
}
סעיף א1

כתוב את השפה L מעל האלפבית {a,c} שהיא אוסף כל המילים שבעבורן הפעולה הנתונה מחזירה true.

סעיף א2

בנה אוטומט סופי דטרמיניסטי שיקבל את השפה L (מסעיף א1).

סעיף ב

(אין קשר לסעיף א.) בנה אוטומט סופי דטרמיניסטי שלא יקבל את כל המילים המכילות {a,b} מעל האלפבית לפחות מופע אחד של אחד מהצירופים: ababa, aaba, bbb.

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

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

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

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