נתונה מחסנית stk מטיפוס שלם, שבה כל המספרים אינם שליליים ואינם עולים על 9 (כלומר כל אחד מהם הוא ספרה בודדת) — הנחה זו תקפה לסעיף א בלבד; בסעיף ב המספרים במחסנית יכולים להיות כל מספר שלם לא-שלילי. לשני הסעיפים משותף מבנה עבודה זהה: לסרוק מחסנית מבלי להרוס אותה — לפופ, לבדוק/לרקורס, ולפוש בחזרה בדיוק כפי שהיה.
נתונה מחסנית stk מטיפוס שלם, שבה כל המספרים אינם שליליים ואינם עולים על 9 (כלומר כל אחד מהם הוא ספרה בודדת) — הנחה זו תקפה לסעיף א בלבד; בסעיף ב המספרים במחסנית יכולים להיות כל מספר שלם לא-שלילי. לשני הסעיפים משותף מבנה עבודה זהה: לסרוק מחסנית מבלי להרוס אותה — לפופ, לבדוק/לרקורס, ולפוש בחזרה בדיוק כפי שהיה.
דוגמת השאלון לסעיף א — num=8 והמחסנית stk שלפניך (מהראש לתחתית)
stk (top->bottom): 162, 251, 568, 77 isExist(stk,8) -> true (ל-568 יש ספרת אחדות 8)
כתוב פעולה חיצונית isExist בשפת Java או IsExist בשפת C#. הפעולה מקבלת מחסנית stk מטיפוס שלם (שבה כל המספרים ספרות בודדות, 0 עד 9 כולל, ואינם שליליים) ומספר שלם num בין 0 ל-9 (כולל). הפעולה תחזיר true אם יש במחסנית מספר שספרת האחדות שלו שווה ל-num, אחרת תחזיר false. הערה: חובה לשמור על מבנה המחסנית עם סיום הפעולה.
public static boolean isExist (Stack<Integer> stk, int num)
נגדיר: הספרה המשמעותית במספר היא הספרה השמאלית ביותר שלו (לדוגמה: הספרה המשמעותית של 32 היא 3, ושל 541 היא 5). לשם פתרון סעיף זה בלבד תוכל להשתמש בפעולה הבאה בלי לממש אותה: public static Stack<Integer> clone (Stack<Integer> s) בשפת Java או public static Stack<int> Clone (Stack<int> s) בשפת C# — מקבלת מחסנית ומחזירה העתק מדויק שלה, בלי לשנות את המחסנית המקורית. כתוב פעולה חיצונית allExist בשפת Java או AllExist בשפת C#, המקבלת מחסנית stk מטיפוס שלם שאינה ריקה (המספרים במחסנית stk אינם שליליים). הפעולה תחזיר true אם כל הספרות המשמעותיות של המספרים שבמחסנית מופיעות כספרת האחדות של מספר כלשהו במחסנית, אחרת תחזיר false.
public static boolean allExist (Stack<Integer> stk)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.