מבוא למדעי המחשב – שפת C (234112), סמסטר אביב 2009
Transcription
מבוא למדעי המחשב – שפת C (234112), סמסטר אביב 2009
מבוא למדעי המחשב – שפת ,)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