שאלה זו כוללת שני סעיפים א-ב שאין קשר ביניהם, ויש לענות על שניהם.
שאלה זו כוללת שני סעיפים א-ב שאין קשר ביניהם, ויש לענות על שניהם.
סעיף א מתייחס לפעולה הנתונה 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;
}
כתוב את השפה L מעל האלפבית {a,c} שהיא אוסף כל המילים שבעבורן הפעולה הנתונה מחזירה true.
בנה אוטומט סופי דטרמיניסטי שיקבל את השפה L (מסעיף א1).
(אין קשר לסעיף א.) בנה אוטומט סופי דטרמיניסטי שלא יקבל את כל המילים המכילות {a,b} מעל האלפבית לפחות מופע אחד של אחד מהצירופים: ababa, aaba, bbb.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.