סעיף א
נתונה הפעולה secret:
public static boolean secret(Stack<Integer> s) {
if (s.isEmpty()) return true;
boolean res = true;
while (!s.isEmpty()) {
int x = s.pop();
if (!s.isEmpty()) {
if (x * s.top() >= 0) {
res = false;
}
}
return res;
}
- תנו דוגמה למחסנית s הכוללת לפחות שישה ערכים שלמים (גם חיוביים וגם שליליים), שעבורה זימון הפעולה secret(s) יחזיר ערך true. אם אין מחסנית כזאת – הסבירו את הסיבה לכך.
- מה מבצעת הפעולה secret באופן כללי עבור מחסנית של מספרים שלמים?
סעיף ב
נתונה הפעולה mystery:
public static boolean mystery (Queue<Integer> q) {
if (q.isEmpty()) return true;
boolean res = true;
while (!q.isEmpty()) {
int first = q.remove();
if (!q.isEmpty()) {
int second = q.remove();
if (first * second <= 0) {
res = false;
}
}
}
return res;
}
- תנו דוגמה לתור q הכולל לפחות שישה ערכים שלמים (גם חיוביים וגם שליליים), שעבורו זימון הפעולה mystery(q) יחזיר ערך true. אם אין תור כזה – הסבירו את הסיבה לכך.
- מה מבצעת הפעולה mystery באופן כללי עבור תור של מספרים שלמים?
סעיף ג
כתבו פעולה בשם check המקבלת מחסנית של מספרים שלמים חיוביים ומספר שלם חיובי k. הפעולה תבדוק אם כל איברי המחסנית הם כפולות של k (מתחלקים ב-k ללא שארית). אם כן – הפעולה תחזיר ערך true, ואם לא – הפעולה תחזיר ערך false. בסיום הפעולה, על המחסנית לחזור למצב המקורי.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.