"ו תשע ` סמסטר א – תכנות הנדסי 1 רקורסיה תרגיל 3–

‫תכנות הנדסי ‪ – 1‬סמסטר א' תשע"ו‬
‫תרגיל ‪ –3‬רקורסיה‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫תאריך פרסום – ‪1/12/2015‬‬
‫מועד הגשה ‪14/12/2015‬‬
‫מתרגל אחראי – אסי שפר‬
‫שאלות בנוגע לעבודה ייענו בפורום שבאתר הקורס‪ .‬נא‬
‫לא לשלוח שאלות במייל‪.‬‬
‫שימו לב‪ :‬בעבודה זו עליכם להשתמש ברקורסיות בלבד‪.‬‬
‫כל שימוש בלולאה יגרור אחריו ציון ‪ 0‬על אותו התרגיל‬
‫שבו התבצע שימוש בלולאה (גם אם הפלט של הקוד יהיה‬
‫נכון)‪ ,‬אלא אם כן בגוף התרגיל נאמר לכם אחרת!‬
‫אסור להשתמש במשתנים סטטיים )‪ )static‬או גלובליים‬
‫)‪ .(global‬כל שימוש במשתנה סטטי או גלובלי יגרור‬
‫אחריו ציון ‪ 0‬על אותו התרגיל שבו התבצע שימוש‬
‫במשתנה כזה!‬
‫ניקוד‪ :‬שאלה ‪ .30% - 1‬שאלה ‪ .40% - 2‬שאלה ‪- 3‬‬
‫‪.40%‬‬
‫בהצלחה!‬
‫כללי‬
‫תרגיל זה יעסוק ברקורסיות‪ .‬עליכם להשתמש אך ורק בחומר שנלמד בהרצאות ובתרגולים‪.‬‬
‫שימו לב להנחיות הכלליות הנוגעות לאופן הגשת העבודה המופיעות בסוף מסמך זה‪ .‬יש למלא כל אחת‬
‫מההנחיות במלואה‪.‬‬
‫תפריט‬
‫בתחילת התוכנית יוצג בפני המשתמש התפריט כמו בתכנית לדוגמה‪.‬‬
‫עבור הקלט ‪ 1‬יופיע תפריט זה‪ .‬עבור הקלט ‪ 2‬יורץ הקוד של שאלה ‪ .1‬עבור הקלט ‪ 3‬יורץ הקוד של‬
‫שאלה ‪ .2‬עבור הקלט ‪ 4‬יורץ הקוד של שאלה ‪ ,3‬ועבור הקלט ‪ 5‬התוכנית תסיים את ריצתה‪ .‬המשתמש‬
‫יכול לטעות עד ‪ 3‬פעמים בסה"כ בכל הרצה בהזנת הבחירה‪ ,‬לאחר ‪ 3‬פעמים המערכת תיסגר‪.‬‬
‫כמו כן‪ ,‬מאחר והעבודה עוסקת ברקורסיות‪ ,‬גם התפריט צריך להיות כתוב בצורה רקורסיבית‪ .‬כלומר‪,‬‬
‫אסור להשתמש בלולאות לצורך כתיבת התפריט‪ .‬במידה ותרצו‪ ,‬אתם יכולים לכתוב פונקציות עזר‬
‫משלכם (בלי הגבלה על הכמות שלהן)‪ ,‬אבל גם בהן אסור שתהיינה לולאות‪.‬‬
‫הדפסות למסך‬
‫הפלט של התוכנית שלכם צריך להיות זהה לפלט שמוגדר לכם בהמשך העבודה (בכל אחת מהשאלות)‪,‬‬
‫ולפלט המתקבל בתוכנית לדוגמא‪.‬‬
‫בכל מקרה של אי‪-‬התאמה בין הפלט שהוגדר בגוף העבודה לבין הפלט של התכנית לדוגמא‪ ,‬הפלט של‬
‫התכנית לדוגמא הוא הקובע מה צריך להיות הפלט של התכנית שלכם‪.‬‬
‫שאלה ‪ 30( 1‬נקודות)‪:‬‬
‫עליכם לקבל קלט מספר שלם ‪ n‬כאשר ‪(2 ≤ 𝑛 ≤ 9‬התוכנה תבקש מספר שוב ושוב עד שתקבל מספר‬
‫בתחום)‪ .‬עליכם ליצור יהלום של סדרות מספרים עולות ויורדות כמו בדוגמת הפלט‪ .‬לדוגמה בהינתן‬
‫הקלט ‪ 9‬הפלט הנו‪:‬‬
‫כאשר הפלט של מ ‪ 2‬הנו‪:‬‬
‫נא לשים לב כי השורה האמצעית מתחילה בדיוק בתחילת השורה בקונסולה‪.‬‬
‫שאלה ‪ 40( 2‬נקודות)‪:‬‬
‫במשחק כדורגל שכונתי בשם "סטנגה" כאשר מבקיעים גול מקבלים נקודה אחת‪ ,‬וכאשר פוגעים בקורה‬
‫מקבלים שתי נקודות‪ .‬עליכם לכתוב תכנית רקורסיבית כאשר בהינתן תוצאת המשחק (קלט מהמשתמש)‬
‫יוצגו כל מהלכי ההבקעה של המשחק האפשריים‪.‬‬
‫לדוגמה בהינתן התוצאה ‪2:2‬‬
‫עץ הרקורסיה צריך להפרש בצורה הבאה‪:‬‬
‫‪ ‬התהליך הראשון שנבדק הנה קבוצה ‪)1st team( 1‬‬
‫‪ ‬התוצאה הראשונה שנבדקת הנה במידה והקבוצה הבקיעה גול רגיל (נקודה אחת)‪ ,‬ורק‬
‫לאחר מכן פגיעה בקורה ( ‪ 2‬נק')‪.‬‬
‫שאלה ‪ 40( 3‬נקודות)‪:‬‬
‫על לוח שחמט בגודל ‪ N x N‬ממקמים במשבצת כל שהיא פרש (הסוס משחמט)‪ .‬בכל שלב הפרש‬
‫יכול להגיע לאחת משמונה המשבצות (במידה וקיימות)‪:‬‬
‫מצא את המסלול שעובר דרך כל המשבצות בלוח‪ ,‬פעם אחת בכל‬
‫משבצת‪.‬‬
‫לדוגמה‪:‬‬
‫בלוח ‪ 8x8‬כאשר ממקמים את הפרש במשבצת [‪:]0,0‬‬
‫בלוח ‪ 5x5‬כאשר ממקימים את הפרש בנקודה [‪]2,2‬‬
‫סדר הבדיקה בעץ הרקורסיה צריך להתבצע בסדר הבא‪:‬‬
‫**זמן ריצה של בעיה זו הנו מעריכי יש לבדוק עם קבצי הקלט הנתונים בפרויקט‪.‬‬
‫הנחיות כלליות‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫יש לוודא לבצע בדיקת קלט‪.‬‬
‫‪ o‬בתפריט הראשי בלבד לאחר ‪ 3‬טעויות של המשתמש (לאו דווקא ברצף)‪ ,‬התכנית‬
‫תסתיים‪.‬‬
‫‪ o‬בכל התפריטים שאינם התפריט הראשי‪ ,‬אם יש טעות משתמש‪ ,‬המשתמש יבקש קלט‬
‫שנית עד שיקליד קלט תקין‪.‬‬
‫תשובות לשאלות בנושא העבודה תתפרסמנה בפורום (באתר הקורס) נא להתעדכן לעיתים‬
‫קרובות‪.‬‬
‫שאלות בנושא העבודה יש לשאול בפורום שבאתר הקורס בלבד‪ .‬לפני שאתם שואלים שאלה‬
‫בפורום הקורס‪ ,‬יש לוודא כי טרם ניתנה לה תשובה לפני כן‪ .‬שאלות שכבר נענו בפורום לא‬
‫ייענו‪.‬‬
‫הגשת העבודות תתבצענה ביחידים בלבד‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫אך‬
‫יש להגיש קובץ זיפ ששמו הוא מספר תעודת הזהות של הסטודנט‪ .‬בתוך קובץ הזיפ יופיע‬
‫ורק קובץ המקור ושמו יהיה ‪ .assignment3.c‬שימו לב ששם הקובץ חייב להיות זהה למה‬
‫שמוגדר לכם בעבודה‪ ,‬אחרת מערכת ההגשות לא תקבל אותו‪.‬‬
‫אין להוסיף תיקיות או קבצים נוספים בתוך קובץ הזיפ‪.‬‬
‫העבודות ייבדקו בבדיקה אוטומטית ‪,‬לכן יש להקפיד שפלט התכנית שלכם יהיה זהה לפלט‬
‫המתקבל בתכנית לדוגמה המצורפת באתר‪ .‬שימו לב שהפלט הוגדר באופן מדויק לאורך כל‬
‫המסמך‪ ,‬וכמו‪-‬כן מצורפת לכם תכנית לדוגמה‪.‬‬
‫העתקות תיבדקנה ולכן אנו מבקשים להימנע מכך‪ .‬סטודנטים אשר ייתפסו מעתיקים יועלו‬
‫לועדת משמעת‪.‬‬
‫שימו לב להערות )‪ (warnings‬שהמהדר מציג‪ .‬עליכם להתייחס לכל הערה ולתקנה‪ .‬נא לוודא‬
‫שהתכנית מתקמפלת ללא שגיאות (‪ )errors‬והערות )‪ .(warnings‬מותר להגיש עם אזהרות‬
‫של ‪ scanf‬ו ‪.gets‬‬
‫חשבו על תסריטים (קלטים) מגוונים ככל האפשר על מנת לבדוק שהתכנית שלכם עובדת בצורה‬
‫תקינה‪.‬‬
‫בהצלחה!‬