Скачать презентацию שאלות ממבחנים litalma cs technion ac il לי-טל Скачать презентацию שאלות ממבחנים litalma cs technion ac il לי-טל

65322ec42dbfe016b08ebd87c95c8d53.ppt

  • Количество слайдов: 24

 שאלות ממבחנים litalma@cs. technion. ac. il לי-טל משיח שאלות ממבחנים litalma@cs. technion. ac. il לי-טל משיח

 מיבחן 59. 7. 12 כתוב תוכנית ב - cshell ששמה arrange אשר מעבירה מיבחן 59. 7. 12 כתוב תוכנית ב - cshell ששמה arrange אשר מעבירה קבצים במדריך הנוכחי שאינם מדריכים לתוך תת-מדריכים לפי הכללים הבאים: לכל קובץ שאינו מדריך, 1. אם קיים תת-מדריך למדריך הנוכחי ששמו זהה ל-4 האותיות הראשונות בשם הקובץ, הקובץ יועבר לתוך המדריך. )שים לב שהכוונה להעברת הקובץ ולא להעתקתו(. 2. אם תנאי 1 לא מתקיים, וקיימים לפחות שני קבצים נוספים במדריך הנוכחי שאינם מדריכים, כך ש-4 האותיות הראשונות בשמם זהות ל-4 האותיות הראשונות בשם הקובץ, התוכנית תיצור תת-מדריך חדש ששמו זהה ל-4 האותיות הראשונות בשם הקובץ, והקובץ יועבר לתוך תת-מדריך זה.

21. 7. 95 מיבחן : דוגמה : אם במדריך הנוכחי קיימים הקבצים הבאים file 21. 7. 95 מיבחן : דוגמה : אם במדריך הנוכחי קיימים הקבצים הבאים file 1 file 2 file 3 prog 1 prog 2 prog script 1 script 2 , הינו מדריך prog כאשר רק הקובץ file 1 file 2 file 3 prog 1 prog 2 prog script 1 script 2

 מיבחן 59. 7. 12 אזי לאחר הפעלת התוכנית arrange במדריך הנוכחי, יהיו הקבצים מיבחן 59. 7. 12 אזי לאחר הפעלת התוכנית arrange במדריך הנוכחי, יהיו הקבצים הבאים במדריך זה: file script 1 script 2 prog כאשר רק file ו – prog הינם מדריכים. במדריך file יהיו הקבצים 3 , file 1 file 2 file ובמדריך prog יהיו הקבצים 1 prog ו - 2 ) prog בנוסף לקבצים שהיו בתוכו לפני הפעלת התוכנית . (arrange prog 2 prog 1 prog 2 script 1 script 3 file 2 file 1 file

 מיבחן 59. 7. 12 הנחות: 1. ניתן להניח שבמדריך הנוכחי לא קיימים קבצים מיבחן 59. 7. 12 הנחות: 1. ניתן להניח שבמדריך הנוכחי לא קיימים קבצים ששמם מתחיל ב - . temp 2. ניתן להניח שמותר לבצע overwrite לקבצים קיימים במידה ויש צורך בכך. 3. בפתרון מותר להיעזר בקובץ ביניים אחד ולא יותר. אין הגבלה על מספר קבצי ה- . script

 פתרון ראשון . את 4 האותיות הראשונות בשמו של כל קובץ temp_file נשמור פתרון ראשון . את 4 האותיות הראשונות בשמו של כל קובץ temp_file נשמור בקובץ בשם ששמו כארבעת האותיות directory לאחר מכן נעבור על כל הקבצים מחדש ונעבירם ל או שישנם יותר משני קבצים אשר שמם מתחיל directory הראשונות בשמם, אם קיים כזה . באותן ארבע אותיות #!/usr/local/bin/tcsh -f foreach f (*) if (-f temp_file) then if (-f $f) then rm -f temp_file set a = `echo $f | cut -c 1 -4` endif if (-d $a) then foreach f (*) mv $f $a if (-f $f) then else set a = `echo $f | cut -c 1 -4` set b = `grep $a temp_file| wc -l` echo $a >>! temp_file if ($b > 2) then endif mkdir $a end mv $f $a endif end

 פתרון שני ראשית ניצור פתרון שני ראשית ניצור "רשימה" שתכיל את ארבעת האותיות הראשונות בכל קובץ ). (First. Four. Letters לאחר מכן נספור את התחיליות. עבור כל תחילית אשר מופיעה יותר מפעמיים נייצר directory כשם התחילית, במידה שלא קיים עדיין, ) . (Make. Dirs בסופו של דבר נעביר כל קובץ אשר קיים directory ששמו כארבע האותיות הראשונות בשם הקובץ ל directory זה. arrange #!/usr/local/bin/tcsh –f First. Four. Letters | sort | uniq –c | Make. Dirs Insert. To. Dirs First. Four. Letters #!/usr/local/bin/tcsh –f )*( foreach F if (-f $F) then `4 -1 echo `$F | cut –c endif end

 פתרון שני . (First. Four. Letters) ראשית ניצור פתרון שני . (First. Four. Letters) ראשית ניצור "רשימה" שתכיל את ארבעת האותיות הראשונות בכל קובץ directory לאחר מכן נספור את התחיליות. עבור כל תחילית אשר מופיעה יותר מפעמיים נייצר (. בסופו של דבר נעביר כל קובץ אשר קיים Make. Dirs) , כשם התחילית, במידה שלא קיים עדיין . זה directory ששמו כארבע האותיות הראשונות בשם הקובץ ל directory Make. Dirs #!/usr/local/bin/tcsh –f set line = ($<) while ($#line >0) if ($line[1] > 2) then if !( -d $line[2] ) then mkdir $line[2] endif set line = ($<) end Inser. To. Dirs #!/usr/local/bin/tcsh –f foreach F (*) if (-f $F) then set init = `echo $F | cut –c 1 -4` if (-d $init) then mv $F $init endif end

 מבחן מועד ג' סמסטר אביב 60 חברת , Moogle שהחליטה זה מכבר לפתוח מבחן מועד ג' סמסטר אביב 60 חברת , Moogle שהחליטה זה מכבר לפתוח סניף בחיפה, הכריזה על יום ראיונות בפקולטה למדעי המחשב בטכניון )אשר בהם יכולים להשתתף רק בוגרי קורס מת"ם כמובן(. במהלך הראיונות נוכחים מספר מראיינים ובינהם גם מנהל . Moogle כל מראיין נותן ציון למרואיין בין 0 ל-001. הציון הסופי יקבע ע"י שיקלול כל הציונים. למנהל יש זכות וטו ולא יתכן כי יתקבל לעבודה מרואיין שהמנהל החליט לא לקבל. בסיום הראיונות כל מראיין מכין קובץ בפורמט הבא על האנשים אותם הוא ראיין: > FULL NAME<> GRADE >< . grades

06 מבחן מועד ג' סמסטר אביב : eyal. grades דוגמה לקובץ בשם 031243129 444422267 06 מבחן מועד ג' סמסטר אביב : eyal. grades דוגמה לקובץ בשם 031243129 444422267 555782311 Moshe Levi Shimon Cohen David 60 90 100 : ויכול להראות כך Moogle. grades יקרא Moogle הקובץ של מנהל 031243129 555782311 444422267 Moshe Levi David Shimon Cohen 57 -NO 80

 מבחן מועד ג' סמסטר אביב 60 עליכם לכתוב סקריפט בשם Best. To. Work מבחן מועד ג' סמסטר אביב 60 עליכם לכתוב סקריפט בשם Best. To. Work אשר ינתח את הקבצים הללו ויחזיר את קבוצת המרואיינים הטובים ביותר. הסקריפט יקבל כפרמטר את מס' מקומות העבודה הפנויים ויחזיר מס' שכזה של מרואיינים מצטיינים ממויינים לפי מידת ההצלחה. במיקרה שאין מספיק מרואיינים שהתראיינו / עברו את הראיון, תוחזר הודעה: ” “not enough interviewees 2 Best. To. Work לדוגמה, עבור שורת ההרצה: על שני הקבצים שבדוגמה, נקבל: 1) 444422267 Shimon Cohen 2) 031243129 Moshe Levi

 מבחן מועד ג' סמסטר אביב 60 הערות: • הניחו כי קבצי הקלט קיימים מבחן מועד ג' סמסטר אביב 60 הערות: • הניחו כי קבצי הקלט קיימים ותקינים • ניתן להניח שאותם מראיינים ראיינו את כל האנשים • אין להשתמש בקבצים זמניים • ניתן להשתמש במספר לא מוגבל של תסריטים

 פתרון Best. To. Work: #! /bin/tcsh -f if (`cat Moogle. grades | grep פתרון Best. To. Work: #! /bin/tcsh -f if (`cat Moogle. grades | grep -v "-NO-" | wc -l` < $1) then echo "not enough interviewees" else cat Moogle. grades | grep -v "-NO-" | cut -f 1, 2 | Calc. Grades | sort -n -r +3 | Print. Best | head -$1 endif

 המשך פתרון Calc. Grades: #! /bin/tcsh -f set line = ($<) while (${#line} המשך פתרון Calc. Grades: #! /bin/tcsh -f set line = ($<) while (${#line} != 0) @ grade = `cat *. grades | grep $line[1] | Calc. One. Grade` echo $line[1] $line[2] $line[3] $grade set line = ($<) end

 המשך פתרון Calc. One. Grade: #! /bin/tcsh -f set line = ($<) set המשך פתרון Calc. One. Grade: #! /bin/tcsh -f set line = ($<) set total_grade = 0 while (${#line} != 0) @ total_grade+= `echo $line | cut -d" " -f 4` set line = ($<) end echo $total_grade

 המשך פתרון Print. Best: #! /bin/tcsh -f set line = ($<) set num המשך פתרון Print. Best: #! /bin/tcsh -f set line = ($<) set num = 1 while (${#line} != 0) echo "${num}) $line[1] $line[2] $line[3]" @ num++ set line = ($<) end

 מבחן מועד א' סמסטר אביב 60 לאחרונה התקבלו תלונות רבות על כך שקיימים מבחן מועד א' סמסטר אביב 60 לאחרונה התקבלו תלונות רבות על כך שקיימים דפים באתר הפקולטה שהלינקים היוצאים מהם הינם לינקים שבורים, כלומר לינקים אשר מצביעים לדפים שאינם קיימים. ברצוננו לעבור בצורה אוטומטית על כל הדפים באתר הפקולטה ולהפיק דו"ח על כל הדפים הלא תקינים. לצורך כך יש לעבוד עם קבצי html כקבצי טקסט. לינק בדף html ניתן לזהות באופן הבא: " href="Y כאשר דף X מצביע לכתובת , Y יופיע בקוד ה- html של דף : X תווים נוספים עשויים להופיע לפני ואחרי ה- string הנ"ל. ניתן להניח )לצורך פשטות(, כי string שכזה עשוי להופיע רק פעם אחת בשורה.

06 מבחן מועד א' סמסטר אביב של דף מסוים מאתר הפקולטה html להלן דוגמה 06 מבחן מועד א' סמסטר אביב של דף מסוים מאתר הפקולטה html להלן דוגמה של חלק מתוכן קובץ . ( )הקוד המתאר לינקים מודגש וניתן לראות כי מדף זה יש לינקים ל-3 כתובות באינטרנט

Technion

Haifa

 מבחן מועד א' סמסטר אביב 60 לצורך הבדיקה האם בכתובת האינטרנט אכן קיים מבחן מועד א' סמסטר אביב 60 לצורך הבדיקה האם בכתובת האינטרנט אכן קיים דף עליכם להשתמש בסקריפט קיים שהוכן מראש בשם . check_link סקריפט זה מקבל כתובת של דף באינטרנט ובודק האם דף זה אכן קיים. check_link http: //www. technion. ac. il לדוגמה, הפקודה: תדפיס SUCCESS במיקרה שהדף בכתובת http: //www. technion. ac. il קיים. במידה והדף אינו קיים, יודפס . ERROR: PAGE NOT FOUND עליכם לכתוב סקריפט בשם . check_web_pages סקריפט זה יקבל כפרמטר שם של קובץ המכיל רשימת קבצי html לבדיקה וידפיס עבור כל קובץ לא תקין את מספר הלינקים הלא תקינים מכלל הלינקים בדף. במקרה וקיים בדף לינק אשר חוזר על עצמו, יש לספור אותו פעם אחת בלבד )שימו לב שגם הלינק הבא יחשב כחוזר על עצמו: http: //www. technion. ac. il ו- . (http: //www. TECHNION. ac. il השורות יודפסו בסדר ממויין לפי מס' הלינקים השבורים מהגדול לקטן. שמות קבצי ה- html התקינים לא יודפסו.

06 מבחן מועד א' סמסטר אביב : המכיל technion_webs. txt לדוגמה עבור הקובץ idex. 06 מבחן מועד א' סמסטר אביב : המכיל technion_webs. txt לדוגמה עבור הקובץ idex. html courses. html staff. html graduate_students. html : הפלט של הפקודה check_web_pages technion_webs. txt : לינקים שבורים הינו graduate_students - ו courses. html כאשר רק לקבצים graduate_students. html: 7 broken links out of 231 courses. html: 2 broken links out of 123

 מבחן מועד א' סמסטר אביב 60 הערות: • ניתן להניח כי הקובץ שניתן מבחן מועד א' סמסטר אביב 60 הערות: • ניתן להניח כי הקובץ שניתן כפרמטר ל- check_web_pages קיים, תקין ומכיל שמות של קבצים קיימים ותקינים • אין להשתמש בקבצים זמניים • ניתן להשתמש במספר לא מוגבל של תסריטים

 פתרון Check. Web. Pages #! bin/tcsh -f cat $1 | Check. Broken. Links פתרון Check. Web. Pages #! bin/tcsh -f cat $1 | Check. Broken. Links | sort +1 -n -r Check. Broken. Links #! bin/tcsh -f set page = ($<) while (${#page} != 0) set num_links = `cat $page | Get. Links. Names | sort -f -u | Count. Links` if ($num_links[1] != 0) then printf "%s: %s broken links out of %sn“ $page $num_links[1] $num_links[2] endif set page = ($<) end

 המשך פתרון Get. Links. Names #! bin/tcsh –f set line = ($<) while המשך פתרון Get. Links. Names #! bin/tcsh –f set line = ($<) while (${#line} != 0) foreach f ( $line ) if ($f =~ href=*) then echo $f | cut -c 6 - | cut -d">" -f 1 endif end set line = ($<) end

 המשך פתרון Count. Links #! bin/tcsh –f set total_links = 0 set broken_links המשך פתרון Count. Links #! bin/tcsh –f set total_links = 0 set broken_links = 0 set link = ($<) while (${#link} != 0) @ total_links ++ if(`check_links $link` =~ *ERROR*) then @ broken_links ++ endif set link = ($<) end echo $broken_links $total_links