מבוא למדעי המחשב – שפת ,)211332( Cחורף 2132-2132
תרגיל בית 3
מועד אחרון להגשה :יום ה' 35215102/עם בונוס
יום ד 16/12/2015בלי בונוס
המתרגל האחראי על תרגיל זה :אריה רונד
משרד :טאוב 344
טל' במשרד43-928-3828 :
arikr87@gmail.com :E-mail
חשוב לשמור את קוד
אישור ההגשה שמקבלים
מהמערכת כשמגישים!!
שעת קבלה רגילה :יום ב' 11:44-12:44
שעות קבלה מיוחדות לשאלות על התרגיל:
יום א' ( 16:30-17:30 )2811112415וביום א' (16:30-17:30 )1411212415
אם שעות אלו אינן נוחות לכם ניתן לתאם פגישה בשעות אחרות1
הוראות הגשה:
הגשה אלקטרונית בבודדים1
תרגיל שיוגש בזמן יקבל אוטומטית בונוס של 5נקודות1
תינתן הארכה אוטומטית של שלושה ימי עבודה (מלבד שישי ושבת) למאחרים ,ללא בונוס1
מלבד מילואים ,לא יתקבלו תרגילים אחרי הארכה של שלושה ימי עבודה1
כל יום מילואים = יום דחייה 1על מנת לקבל את הדחייה ,עליכם לשלוח באי-מייל למתרגל האחראי
על תרגיל זה (אריה רונד) עותק של האישור המראה שהייתם במילואים 1אם האישור יגיע אליכם
בתאריך מאוחר ,אז תודיעו על כך לאריה רונד1
ערעורים ניתן להגיש עד לתאריך המסומן בהודעה על מתן הציונים (כשבועיים לאחר קבלת הציון)1
במידה והערעור לא יתקבל תהיה הורדה אוטומטית של הבונוס (חמש נקודות) אם התקבל כזה1
עירעורים על הדפסות שגויות בפלט שלכם לא יתקבלו 1עליך לבדוק את תוכנית שלך עם
DiffMergeלפני הגשתך1
הנחיות:
אנא קרא/י את השאלות בעיון לפני שתתחיל/י בפתרונן1
ניתן להניח כי הקלט תקין ,אלא אם כן נאמר אחרת1
שימו לב! הבדיקה תהיה אוטומטית ,ולכן הקפיד5י מאוד להדפיס בדיוק בפורמט שהתבקשת
ולבדוק את הפלט מול הפלט של הדוגמאות שקיבלת עם .DiffMerge
o
וודא/י את האותיות הגדולות והקטנות לפי הדוגמאות וההסברים בתרגיל1
o
הורדת שורה אחת בסוף כל שורה שהודפסה ,אפילו אם היא האחרונה בתוכנית1
o
אין להדפיס רווחים בהתחלת שורה ובסופה1
יש לבדוק את אתר ה FAQ -של התרגיל לעיתים תכופות על מנת לקבל עדכונים על התרגיל1
בתרגיל זה מותר להשתמש בפונקציות מהספרייה stdio.hבלבד (בלי clrscrו1)delay-
הגשה אלקטרונית בבודדים היא דרך אתר הקורס 1הגיש קובץ zip( hw3.zipולא פורמט אחר (!)
כגון 1)rarהשם של קובץ חייב להיות באנגלית ללא רווחים 1אין דרישות נוספות לשם הקובץ ,כלומר
גם sharon.zipמקובל מבחינת המערכת 1הקובץ יכיל בתוכו רק את הקבצים הבאים (לא לעשות zip
על התיקייה בה נמצאים הקבצים להגשה – במקרה כזה ההגשה לא תתקבל ע''י המערכת!):
oקובץ students.txtעם שמך ,מספר תעודת הזהות וכתובת האימייל שלך1
oקובץ פתרון hw3q1.cעבור שאלה 11
oקובץ פתרון hw3q2.cעבור שאלה 12
השתמש ב redirection-כדי להפנות את הפלט לקובץ טקסט1
יש להקפיד להגיש את כל הקבצים בדיוק עם השמות שמופיעים לעיל 1הגשה שלא תעמוד בתנאי זה
לא תתקבל ע"י המערכת!
שימו לב לאתר ה FAQ -של התרגיל ,אשר מכיל עכדונים ותשובות לשאלות נפוצות ,ויעודכן מפעם
לפעם .חשוב להתעדכן לעיתים תכופות – זה יכול לחסוך הרבה בעיות ,ונקודות שירדו בבדיקה
שכשלה .בפרט ,לפני פנייה למתרגל האחראי בדקו את הכתוב על מנת לחסוך לעצמכם זמן המתנה
לתשובה ,שבדרך כלל תהיה הפניה ל FAQ -בכל מקרה .ניתן למצוא את ה FAQ-בכתובת:
http://www.cs.technion.ac.il/~sarikr/HW3-faq.html
שאלה – 2קלט באורך בלתי מוגבל
בשאלה זו אסור להשתמש במערכים או מחרוזות (חומר שיילמד בהמשך הקורס) .יש להניח
שהקלט חוקי ותקין ,כלומר מתאים למבנה המפורט ובטווחים הנכונים.
חיפושית חדשה שהתגלתה יודעת ללכת בכל שנייה באחד מארבעת מהכיוונים הבאים :למטה,
למעלה ,ימינה או שמאלה (בשנייה אחת לא תיתכן תנועה באלכסון) 1בנוסף מרחק תנועתה של
החיפושית בכל שנייה הוא בין 4ל 8מטרים1
במעבדה לביולוגיה מעוניינים לחקור את החיפושית 1לצורך כך מתעדים בכל שנייה את כיוון
תנועתה של החיפושית ואת המרחק שעשתה בשנייה זו1
בהתחלה ,החיפושית נמצאת בקואורדינטה x=0,y=0ולאחר כל שנייה הקואורדינטה שבה היא
נמצאת מתעדכנת בהתאם לתנועתה 1כאשר החיפושית זזה ימינה ,מוסיפים לערך קואורדינטת
ה xאת מרחק הצעד 1כאשר החיפושית נעה שמאלה ,מחסירים מערך קואורדינטת ה xאת מרחק
הצעד 1כאשר החיפושית זזה למעלה ,מוסיפים לערך קואורדינטת ה yאת מרחק הצעד 1כאשר
החיפושית נעה למטה ,מחסירים מערך קואורדינטת ה yאת מרחק הצעד1
דוגמא לתנועה חוקית – בשנייה הראשונה החיפושית נעה בכיוון שמאלה 4מטרים 1כעת
הקואורדינטה שבה היא נמצאת היא x=-3,y=0
בשנייה השנייה היא נעה למעלה 8מטרים 1כעת הקואורדינטה שבה היא נמצאת היא 1x=-3,y=9
ובשנייה השלישית היא נעה שוב פעם למעלה 6מטרים 1כעת הקואורדינטה שבה היא נמצאת
היא 1x=-3,y=15
דוגמא לתנועה לא חוקית – בשנייה הראשונה החיפושית נעה בכיוון ימינה 14מטרים 1תנועה זו
לא חוקית מכיוון שאסור לנוע יותר מ 8מטרים בשנייה1
עוד דוגמא לתנועה לא חוקית – בשנייה הראשונה החיפושית נעה בכיוון ימינה 1מטרים ובכיוון
למטה 2מטרים 1תנועה זו לא חוקית מכיוון שאסור לנוע באלכסון בשנייה אחת1
עליכם לכתוב תכנית שמקבלת כקלט ,תו אחרי תו ,כיוון ואורך צעד עבור כל שנייה1
הקלט בנוי במבנה הבא :עבור כל שנייה תופיע תחילה אות שמתארת כיוון ולאחר מכן יופיע
מספר בין 4ל 8המתאר אורך צעד
אות שמתארת כיוון יכולה להיות רק אחת מהאותיות l,r,u,dכאשר lמסמלת תנועה שמאלהr,
מסמלת תנועה ימינה u,מסמלת תנועה למעלה ו dמסמלת תנועה למטה1
הקלט מסתיים באות xקטנה1
דוגמא לקלט חוקי:
l9u3d2u5d8x
הסבר -בשנייה הראשונה החיפושית נעה שמאלה 8מטרים 1בשנייה השנייה החיפושית נעה
למעלה 4מטרים 1בשנייה השלישית החיפושית נעה למטה 2מטרים 1בשנייה הרביעית
החיפושית נעה למעלה 5מטרים ובשנייה החמישית החיפושית נעה למטה 9מטרים1
פלט:
התוכנית תדפיס 3שורות שונות במבנה
ב=, yא=beetle location is x
ג maximal x displacement is
ד maximal y displacement is
כאשר:
11א זה קואורדינטת ה xשל החיפושית לאחר סיום הצעדים
12ב זה קואורדינטת ה yשל החיפושית לאחר סיום הצעדים
14ג זה קואורדינטת ה xהמקסימלית בערך מוחלט של החיפושית לאחר סיום הצעדים1
13ד זה קואורדינטת ה yהמקסימלית בערך מוחלט של החיפושית לאחר סיום הצעדים1
-בסיום כל שורה ,כולל האחרונה ,יש לרדת שורה (ע"י )\n
הערות:
הניחו כי החיפושית עושה לפחות צעד אחד
יש להניח כי הקלט תקין ,כלומר מבנה הקלט הוא אות אחת בדיוק ומספר יחיד עבור כל
צעד 1בנוסף ,יש להניח כי התו xמופיע בסוף1
אין צורך לבדוק תקינות קלט1
דוגמת הרצה:
עבור הקלט
l9u3d2u5d8x
הפלט הצפוי הוא
beetle location is x=-9, y=-2
maximal x displacement is 9
maximal y displacement is 6
הסבר-
בסיום תנועתה החיפושית הגיעה לקואורדינטה 1x=9,y=-2
בציר ,xהחיפושית הגיעה במהלך תנועתה לקואורדינטה x=9ולכן קואורדינטת ה xהמקסימלית
בערך מוחלט הוא 19
בציר ,yהחיפושית הגיעה במהלך תנועתה לקואורדינטה y=6ולכן קואורדינטת ה yהמקסימלית
בערך מוחלט הוא 16
דוגמא נוספת:
עבור הקלט
r9l8l9l3r5l0x
הפלט הצפוי הוא
beetle location is x=-6, y=0
maximal x displacement is 11
maximal y displacement is 0
הסבר-
בסיום תנועתה החיפושית הגיעה לקואורדינטה 1x=-8,y=0
בציר ,xהחיפושית הגיעה במהלך תנועתה לקואורדינטה x=-12ולכן קואורדינטת הx
המקסימלית בערך מוחלט הוא 112
בציר ,yהחיפושית לא נעה כלל ,ולכן קואורדינטת ה yהמקסימלית בערך מוחלט הוא 14
שאלה -1לולאות מקוננות
בשאלה זו אסור להשתמש במערכים או מחרוזות (חומר שיילמד בהמשך הקורס) .יש להניח
שהקלט חוקי ותקין ,כלומר מתאים למבנה המפורט ובטווחים הנכונים.
עליכם לכתוב תכנית הקולטת מספר שלם חיובי 1x
התכנית מדפיסה את מספר הספרות החוזרות יותר מפעם אחת ב 1xלאחר ההדפסה יש לרדת
שורה (ע"י 1)\n
דוגמא:
עבור x=1993התכנית תדפיס 2מכיוון שהספרה השנייה מימין מופיעה יותר מפעם אחת וגם
הספרה השלישית מימין מופיעה יותר מפעם אחת1
דוגמא נוספת:
עבור x=123התכנית תדפיס 4מכיוון שכל הספרות מופיעות בדיוק פעם אחת1
דוגמא נוספת:
עבור x=1122התכנית תדפיס 3מכיוון שכל הספרות יותר מפעם אחת1
רמזים
תחילה כיתבו קוד העובר על כל הספרות של המספר הנקלט1
עשו זאת ע"י לולאה יחידה 1לאחר מכן היעזרו בקוד זה כדי לפתור את השאלה1
הוסיפו הדפסות ביניים זמניות (שאותם תימחקו לפני הגשת התרגיל) כדי לוודא שהקוד
שלכם עובד בצורה תקינה1
הפתרון מכיל לולאה מקוננת אחת (סה"כ 2לולאות) לדוגמא:
{)While( exp1
…..
…..
{) While( exp2
…..
….
}
….
…
}
הערה
יש להניח כי הקלט תקין1
© Copyright 2025