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

מסמכים קשורים
שאלהIgal : מערכים דו מימדיים רקורסיה:

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

מבוא למדעי המחשב

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבוא למדעי המחשב

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

מבוא לתכנות ב- JAVA תרגול 11

מבוא למדעי המחשב

Microsoft Word - c_SimA_MoedB2005.doc

מבוא למדעי המחשב

מבוא למדעי המחשב - חובלים

מבוא למדעי המחשב

PowerPoint Presentation

מבוא לתכנות ב- JAVA תרגול 7

תרגול 1

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

מבוא למדעי המחשב

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

מבוא למדעי המחשב - חובלים

Slide 1

PowerPoint Presentation

Microsoft Word B

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

הגשה תוך שבוע בשעת התרגול

Slide 1

תרגול 1

234114

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

PowerPoint Presentation

Slide 1

תרגול 1

PowerPoint Presentation

עבודת בית מספר 5: מבני נתונים מבוא למדעי המחשב, סמסטר א' תשע"ט מבוא למדעי המחשב סמסטר א' תשע"ט צוות העבודה: מרצה אחראי: יוחאי טוויטו מתרגלים אחראים: א

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

Microsoft Word - c_SimA_MoedA2006.doc

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

תרגול 1

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

מבוא למדעי המחשב

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

הגשה תוך שבוע בשעת התרגול

Slide 1

תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

מהוא לתכנות ב- JAVA מעבדה 3

Tutorial 11

Slide 1

PowerPoint Presentation

תכנות מונחה עצמים א' – תש"ע

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

תרגיל 1 בקורס תוכנה 1

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

Slide 1

ex1-bash

איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl

תרגיל בית מספר 1#

שקופית 1

Slide 1

Microsoft PowerPoint - rec3.ppt

Slide 1

בס"ד תרגיל 3 מועד אחרון ל כללי בתרגיל זה עליכם לכתוב תוכנה שמדמה מאגר נתונים של חנות. את מוצרי החנות תייצגו באמצעות עצים ורשימות מקושרות יהיה עליכם לנ

תוכן העניינים

תוכן העניינים

PowerPoint Presentation

PowerPoint Presentation

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

תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה

עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכ

פייתון

Microsoft Word - pitaron222Java_2007.doc

מס' סידורי: ת.ז.: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך ה

מבוא למדעי המחשב

Microsoft PowerPoint - rec1.ppt

Slide 1

Microsoft Word - ExamA_Final_Solution.docx

תרגול מס' 7: תרגילים מתקדמים ברקורסיה

תרגיל בית מספר 1#

תרגול 3 - מערכים

PRESENTATION NAME

PowerPoint Presentation

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle ב

Microsoft PowerPoint - 10_threads.ppt

HTML - Hipper Text Makeup Language

PowerPoint Presentation

PowerPoint Presentation

Slide 1

סדנת תכנות ב C/C++

Slide 1

PowerPoint Presentation

Data Structure Assignment no.3 תאריך הגשה: p.m. 11/09/16, 23:59 את העבודה יש להגיש בזוגות במערכת ההגשות.submission system על העבודה להיות מוגשות כקובץ

תמליל:

מבחן מועד א' תאריך הבחינה: 12.2.2015 שמות המרצים: דר' רועי זיון פרופ' משה זיפר פרופ' מיכאל קודיש דר' צחי רוזן גב' מיכל שמש שם הקורס: מבוא למדעי המחשב אנא קיראו היטב את ההראות שלהלן: מספר הקורס: 202-1-1011 שנה: 2015 סמסטר: א' מועד: משך הבחינה: 2.5 שעות חומר עזר: אסור א במבחן זה 3 שאלות. ענו על כל השאלות. בשאלות בהן לא מצוין אחרת, ניתן לכתוב פתרון רקורסיבי או פתרון שאינו רקורסיבי, לבחירתכם. רשמו את תשובותיכם בדפי התשובות בלבד. המחברת שקיבלתם היא מחברת טיוטה והיא לא תימסר כלל לבדיקה. בסיום הבחינה נשמור אך ורק את דף התשובות. כל שאר החומר יועבר לגריסה. שימו לב: החשיבות העליונה היא לנכונות הקוד. מאידך, יעילות,סגנון וכתיבה ברורה חשובים גם הם, ולכן תשובה יעילה ומסוגננת תזכה בציון גבוה יותר. הקפידו על אינדנטציה נכונה. אתם נבחנים על כתיבת הקוד עצמו. אינכם חייבים לרשום הערות. אתם רשאים לרשום הערות אך אלו לא ישפיעו על הציון. בכל מקרה אין לחרוג מהמקום הנתון לתשובה בדף התשובות. בכל השאלות, מספר השורות העומדות לרשותכם בדף התשובות רומז על אורך התשובה הנדרשת. הקפידו על כתב יד ברור. תשובות מסורבלות או ארוכות מדי לא יזכו בניקוד מלא. כתבו פתרון לשאלה קודם במחברת הטיוטה ורק לאחר מכן העתיקו פתרון נקי לדף התשובות. אין להוסיף פונקציות עזר אלא אם רשום במפורש שמותר. בשאלה רבת סעיפים, מומלץ לקרוא את כל הסעיפים בשאלה לפני שניגשים לפתרונה. אם יש סעיף בשאלה המסתמך על סעיף אחר, מותר להשתמש בו גם אם לא פתרתם את הסעיף האחר. שימו לב שבדפים האחרונים ישנם מספר נספחים ובהם מידע שעשוי לעזור לכם. הקפידו לרשום בכל דפי התשובות את מספר הנבחן ואת מספר החדר שבו אתם נבחנים. אם אינכם יודעים את התשובה לסעיף שלם כלשהו, רשמו "לא יודע/ת" )במקום תשובה( ותזכו ב- 02% מניקוד הסעיף )מעוגל מטה(. אם רשום "לא יודע/ת", ההתייחסות היא לכל הסעיף. עמוד 1 מתוך 9

שאלה מספר )30 1 נקודות( תרגיל זה עוסק בחלוקת אברי מערך a המכיל מספרים שלמים לשני חלקים. חלוקה תוגדר במונחים של מחרוזות מציינות. מחרוזת s נקראת מחרוזת מציינת אם היא מכילה רק את התוים '0' ו-' 1 '. דוגמא: "10010110" = s היא מחרוזת מציינת )באורך 8(. המחרוזת הריקה היא גם מחרוזת מציינת )באורך 0(. עבור מערך a באורך n ומחרוזת מציינת s באורך,s n מגדירה חלוקה של אברי מערך a לשתי קבוצות )עם חזרות( A 0, A 1 באופן הבא: לכל 1 n i 0.s. charat(i) אם == 0 A 0 נמצא ב- a[i] האיבר.s. charat(i) אם == 1 A 1 - נמצא ב a[i] האיבר דוגמא: עבור המערך {1,2,3,2 = a והמחרוזת המציינת "1010" = s A 0 = {2,2 ו- {1,3 = 1.A סעיף א )02 נקודות( כיתבו פונקציה s) boolean isequalsum(int[] a, String אשר מקבלת מערך a ומחרוזת מציינת s באורך של a ומחזירה ערך true אם ורק אם סכום הערכים ב- שווה לסכום הערכים ב- A. 1 A 0 דוגמאות: אם {1,2,3,2 = a ו- "1010" = s אז קריאה לפונקציה תחזיר את הערך true מכיוון שמתקיים כי = 2 + 2 3.1 + אם {1,2,3,4 = a ו- "1011" = s אז קריאה לפונקציה תחזיר את הערך false מכיוון שמתקיים כי 2 4.1 + 3 +.true אז קריאה לפונקציה תחזיר את הערך s = "" ו- a = { אם הערות: מותר להניח ש- s ו- a אינם null והם באותו האורך )יתכן אורך אפס(, וגם שהמחרוזת s היא מחרוזת מציינת. סעיף ב )02 נקודות( השלימו את הגדרת הפונקציה( a String equalsum(int[] ואת פונקצית העזר הרקורסיבית שהיא קוראת לה. הפונקציה מקבלת מערך a של מספרים שלמים ומחזירה, אם יש, מחרוזת מציינת) אשר עומדת בתנאי של הפונקציה isequalsum מסעיף א'. אם לא קיימת מחרוזת כזאת הפונקציה מחזירה.null public static String equalsum(int[] a){ ;(הוסיפו עוד ארגומנטים,a) return equalsum (הוסיפו עוד ארגומנטים a, public static String equalsum(int[] השלימו בדף התשובות את פונקצית העזר // הערות: מותר להניח כי הקלט תקין. יתכן ו == 0 length.a. יתכן ש- a מכיל ערכים חיוביים, שליליים וגם אפס. יתכן ויש יותר ממחרוזת מציינת אחת. יש להחזיר אחת אם קיימת, כאשר לא משנה איזו מחרוזת תוחזר. עמוד 2 מתוך 9

שאלה מספר )55 2 נקודות( בהרצאה ראינו את המחלקות רשימה מקושרת ( LinkedList )וחוליה.(Link) להלן המחלקות הרלוונטיות )עם חלק מן השיטות בהן( כפי שנלמדו בכיתה: אנא עיינו בשדות המחלקה ובשיטות המחלקה ביסודיות על מנת לענות נכונה על סעיפי השאלה. public class LinkedList { public class Link { public Link first; public LinkedList(){ first = null; private static int sign(char c1, char c2){ סעיף ב ', השלימו בדף התשובות // public int sentencetype(){ סעיף ג ', השלימו בדף התשובות // public void printascendingsentence(){ סעיף ד ', השלימו בדף התשובות // private Object data; private Link next; public Link(Object data) { מימוש הבנאי אינו רלוונטי // public Object getdata() { return data; public Link getnext() { return next; public String tostring() { return ""+data; public char firstchar(){ סעיף א', השלימו בדף התשובות // בשאלה זו החוליות ברשימות יכילו אובייקט מטיפוס String המייצג מילה לא ריקה ושונה מ-,A(.,B,C, ){Z בשפה האנגלית בה התו הראשון הינו אות גדולה בשפה האנגלית null כך בעצם אוסף המילים הסדור בחוליות הרשימה החל מהחוליה הראשונה מהווה משפט המיוצג ע"י הרשימה. הגדרה: משפט הינו משפט-עולה )יורד( אם הוא עונה על התנאי הבא: הסדרה המורכבת מהתו הראשון בכל מילה במשפט על פי סדר הופעת המילים במשפט הינה סדרה מונוטונית עולה )יורדת( ממש )אין שני תווים עוקבים שווים( על פי הסדר האלפביתי האנגלי )לקסיקוגרפי(. במשפט יש לפחות שתי מילים. דוגמאות עבור סעיפי השאלה: 1. הרשימה הבאה G,L,S כיוון שסדרת התוים Good Luck מייצגת את המשפט העולה Students הינה סדרה עולה באלפבית האנגלי. עמוד 3 מתוך 9

2. הרשימה הבאה מייצגת את המשפט I Love Computer Science שאינו משפט-עולה ואינו משפט-יורד כיוון שסדרת התווים I,L,C,S אינה סדרה מונוטונית באלפבית האנגלי. 3. הרשימה הבאה מייצגת את המשפט היורד Morning Has Broken כיוון שסדרת התוים M,H,B הינה סדרה יורדת באלפבית האנגלי. הרשימה הריקה מייצגת את המשפט הריק שאינו משפט-עולה ואינו משפט-יורד כיוון שאינו מכיל לפחות שתי מילים..5 סעיף א' )0 נקודות( כיתבו במחלקה Link את השיטה firstchar() public char אשר מחזירה את התו הראשון במחרוזת המיוצגת בשדה.data זיכרו כי השדה data מצביע על אובייקט מטיפוס String שאינו המילה הריקה ושונה מ-.null סעיף ב' )0 נקודות( כיתבו במחלקה LinkedList את שיטת העזר הפרטית הסטטית c2) private static int sign(char c1, char המקבלת שני טיפוסים פרימיטיביים מסוג char בשם c1 ו- c2 ומחזירה 1- אם,c1>c2 מחזירה 1 אם c1<c2 ומחזירה 0 אם c1 ו- c2 שווים. סעיף ג' )00 נקודות( כיתבו במחלקה LinkedList את השיטה sentencetype() public int אשר מחזירה 1 אם הרשימה מייצגת משפט-עולה, מחזירה 1- אם הרשימה מייצגת משפט-יורד ומחזירה 0 אחרת. דוגמאות לסעיף ג': השיטה תחזיר 1 עבור הרשימה בדוגמא מספר 1. השיטה תחזיר 1- עבור הרשימה בדוגמא מספר 3. השיטה תחזיר 0 עבור הרשימות בדוגמאות מספר 2 ו- 5. הערות לסעיף ג': לצורך הפשטות נניח שאם רשימה אינה ריקה, היא מכילה לפחות שתי חוליות. על השיטה לבצע מעבר אחד לכל היותר על חוליות הרשימה. פתרון שבו ייתכן ויתבצע יותר ממעבר אחד על חוליות הרשימה יזכה ל- 6 נקודות לכל היותר )קנס של 5 נקודות(. מומלץ בחום להשתמש בסעיפים קודמים. סעיף ד' )02 נקודות( כיתבו במחלקה LinkedList את השיטה() printascendingsentence public void אשר מדפיסה את המילים במשפט S המיוצג ע"י הרשימה, עם רווחים בינהן, באופן הבא ובתנאים הבאים: א. S הינו משפט-עולה או משפט-יורד. ב. סדר המילים המודפסות חייב להיות עולה )כלומר, עבור משפט-עולה המילים יודפסו כסדרן ועבור משפט-יורד המילים יודפסו בסדר הפוך(. ג. אם תנאי א' לא מתקיים השיטה לא מדפיסה דבר. עמוד 4 מתוך 9

דוגמאות לסעיף ד':.Good Luck Students עבור הרשימה שבדוגמא מספר 1 השיטה תדפיס: עבור הרשימה שבדוגמא מספר 3 השיטה תדפיס.Broken Has Morning עבור הרשימות שבדוגמאות מספר 2 ו- 5 השיטה לא תבצע/תדפיס דבר )כיוון שתנאי א' לא מתקיים(. הערות לסעיף ד': ניתן להניח כי הרשימה שונה מ- null, אך יתכן כי היא ריקה. ניתן להניח כי אם רשימה אינה ריקה היא מכילה לפחות שתי חוליות. אין לשנות את הרשימה המקושרת עליה פועלת הפונקציה. בפתרון השאלה עליכם להשתמש בלפחות אחד מבין מבני הנתונים הבאים, לבחירתכם: Queue המממשת את הממשק MyQueue אובייקט המתואר ע"י המחלקה a( אשר נלמד בכיתה. Stack המממשת את הממשק MyStack אובייקט המתואר ע"י המחלקה b( אשר נלמד בכיתה. להלן המחלקות והממשקים הרלוונטיים כפי שנלמדו בכיתה: public interface Queue { public void enqueue(object o); public Object dequeue(); public boolean isempty(); public interface Stack { public void push(object o); public Object pop(); public boolean isempty(); public class MyStack { public MyStack(){ מימוש הבנאי אינו רלוונטי // *למעט חתימת הבנאי כל שאר פרטי המחלקה אינם רלוונטיים לשאלה public class MyQueue { public MyQueue(){ מימוש הבנאי אינו רלוונטי // *למעט חתימת הבנאי כל שאר פרטי המחלקה אינם רלוונטיים לשאלה עמוד 5 מתוך 9

בסעיפים הבאים עליכם להשלים מחלקה המממשת את הממשק Iterator כפי שנלמד בכיתה: public interface Iterator { public Object next(); public boolean hasnext(); עליכם להשלים את המחלקה MergeIterator הנתונה בתחתית העמוד בהתאם לסעיפים הבאים הנתונים בגוף המחלקה. מחלקה זו מגדירה איטראטור עבור זוגות של רשימות מקושרות אשר תוארו בתחילת השאלה. בנאי האיטראטור מקבל שתי רשימות אשר אמורות לייצג משפטים-עולים. אם אחת הרשימות אינה מייצגת משפט-עולה הבנאי זורק חריגה כמפורט בסעיף ה'. בהנתן רשימות כאלו, האיטרטור מחזיר בשיטה next() את המילה הבאה מבין המילים בשני המשפטים כך שבמעבר מלא על הרשימות מוחזרות מילות שני המשפטים בסדר לא יורד. דוגמאות עבור הסעיפים הבאים: Beautiful Day ו- Hello World עבור הרשימות המייצגות את המשפטים העולים האיטראטור יחזיר את המילים הבאות בסדר הבא: Beautiful, Day, Hello, World Good Morning World ו- Hello World עבור הרשימות המייצגות את המשפטים העולים האיטראטור יחזיר את המילים הבאות בסדר הבא: Good, Hello, Morning, World, World עבור הרשימה המייצגת את המשפט העולה Hello World ו- הרשימה הריקה האיטראטור יזרוק חריגה, שכן הרשימה הריקה אינה מייצגת משפט-עולה. שימו לב: לא ניתן להוסיף שדות מחלקה נוספים. סעיף ה' )5 נקודות( השלימו את בנאי המחלקה. הבנאי מקבל כפרמטרים שתי רשימות מקושרות אשר אמורות לייצג משפטים-עולים. ניתן להניח כי הרשימות אינן,null אך יתכן כי הרשימות ריקות. על הבנאי לוודא כי הרשימות שקיבל אכן מייצגות משפטים-עולים ואם תנאי זה לא מתקיים עליו לזרוק חריגה מסוג RuntimeException עם הודעה מתאימה כרצונכם )ראו תזכורת לבנאי המחלקה בנספח(. בנוסף, על הבנאי לאתחל את שדות המחלקה. סעיף ו' )5 נקודות( השלימו את השיטה hasnext() boolean בדף התשובות. כל עוד לא הוחזרו כל המילים ע"י השיטה next() על השיטה hasnext() להחזיר.true לאחר שהאיטראטור עבר והחזיר את כל אברי הרשימות, על השיטה hasnext() להחזיר.false סעיף ז' )02 נקודות( השלימו את השיטה next() Object בדף התשובות. בכל קריאה לשיטה next() תוחזר מילה מבין המילים אשר ברשימות אשר עדיין לא הוחזרו ע"י האיטראטור, על פי ההנחיות לעיל. public class MergeIterator implements Iterator{ private Link link1; private Link link2; public MergeIterator (LinkedList k1, LinkedList k2){ סעיף ה' השלימו בדף התשובות // public boolean hasnext(){ סעיף ו' השלימו בדף התשובות // public Object next(){ סעיף ז' השלימו בדף התשובות // // Class MergeIterator עמוד 6 מתוך 9

שאלה מספר )05 3 נקודות( בשאלה זו נעסוק בעץ בינארי (BinaryTree) המורכב מצמתים.(BinaryNode) בכל צומת השדה Object data מצביע בפועל על טיפוס מסוג.Character )ראו תזכורת למחלקה בנספח(. נתונות המחלקות BinaryNode ו- BinaryTree כפי שנלמדו בכיתה: public class BinaryTree { private BinaryNode root; public BinaryTree() { root = null; public boolean haspathword(string word){ סעיף א 1 ', השלימו בדף התשובות // public void printpaths(){ סעיף ב 1 ', השלימו בדף התשובות // public class BinaryNode { private Object data; private BinaryNode left; private BinaryNode right; public BinaryNode(Object data) { if (data == null) throw new RuntimeException("We are too lazy to deal with null data")"; this.data = data; left = null; right = null; public boolean haspathword(string word){ סעיף א 1 ', השלימו בדף התשובות // (/* סעיף ב 1 ', השלימו בדף התשובות printpaths(/* public void סעיף ב 1 ', השלימו בדף התשובות // הגדרה: מסלול שורש-עלה הוא מסלול המחבר בין שורש העץ לאחד מן העלים בעץ. דוגמא: לפניכם איור המדגים עץ בו ישנם חמישה מסלולי שורש-עלה: 1. <A,L,O,N> 2. <A,L,O,N,I> 3. <A,L,O,N,A> 4. <A,N,A,E,L> 5. <A,N,A> עמוד 7 מתוך 9

סעיף א )00 נקודות( בסעיף זה נעסוק במחרוזת המורכבת מהתוים במסלול שורש-עלה )על פי סדר הופעתם במסלול(. הוסיפו למחלקה BinaryTree את השיטה public boolean haspathword(string word) )סעיף א 0 4 נקודות( אשר בהינתן מחרוזת כלשהי, מחזירה ערך true אם ורק אם קיים בעץ מסלול שורש-עלה אשר המחרוזת המורכבת מהתוים המופיעם בו )על פי הסדר במסלול( שווה למחרוזת השאילתא.word שיטה זו נעזרת בשיטה שתכתבו בסעיף הבא, א 0. )סעיף א 0 8 נקודות( הוסיפו למחלקה BinaryNode את השיטה public boolean haspathword(string word) אשר נקראת ע"י השיטה מסעיף א 1 לצורך ביצוע המשימה. ניתן להניח כי המחרוזת word אינה המחרוזת הריקה ושונה מ-.null לדוגמא, עבור העץ שבאיור והמחרוזת "ALON" השיטה תחזיר,true כיוון שמסלול שורש-עלה מספר 1 בדוגמא עונה על הדרישות. הערות: ניתן להניח כי השדה Object data בצמתי העץ מצביע על אובייקט מטיפוס Character ולכן שונה מ- null. אם העץ ריק יש להחזיר.false שימו לב כי לא ניתן להשתמש בפונקציות עזר. סעיף ב )03 נקודות( בסעיף זה תכתבו שיטות המאפשרות לעץ בינארי להדפיס את כל המחרוזות המתאימות למסלולי שורש-עלה שבו )סדר ההדפסה אינו משנה(. ALON ALONI ALONA ANAEL ANA לדוגמא, עבור העץ באיור יודפסו המחרוזות הבאות )אין חשיבות לסדר(: )סעיף ב 0 4 נקודות( הוסיפו למחלקה BinaryTree את השיטה public void printpaths() אשר מדפיסה את המחרוזות המתאימות לכל מסלולי השורש-עלה שבו. שיטה זו נעזרת בשיטה שתכתבו בסעיף הבא, ב 0. )סעיף ב 0 9 נקודות( הוסיפו למחלקה BinaryNode את השיטה */) השלימו בדף התשובות printpaths(/* public void אשר נקראת ע"י השיטה מסעיף ב 1 לצורך ביצוע המשימה. הערות: ניתן להניח כי השדה Object data בצמתי העץ מצביע על אובייקט מטיפוס Character ולכן שונה מ- null. אם העץ ריק הפונקציה לא תבצע דבר. שימו לב כי לא ניתן להשתמש בפונקציות עזר. בהצלחה! עמוד 8 מתוך 9

נספח א: מספר שיטות מהמחלקה String int length() שיטה במחלקה String המחזירה את אורך המחרוזת שמפעילה את השיטה. int indexof(char c) שיטה במחלקה String המחזירה את האינדקס הראשון במחרוזת שמפעילה את השיטה שבו מופיע התו c. אם התו c אינו מופיע במחרוזת זו השיטה מחזירה 1-. char charat(int index) שיטה במחלקה String המחזירה את התו במקום index במחרוזת שמפעילה את השיטה. String substring(int i) שיטה במחלקה String המחזירה מחרוזת חדשה שהיא תת מחרוזת של המחרוזת שמפעילה את השיטה, החל מהמיקום ה- i )כולל( ועד סוף המחרוזת. String substring(int i, int j) שיטה במחלקה String המחזירה מחרוזת חדשה שהיא תת מחרוזת של המחרוזת שמפעילה את השיטה, החל מהמיקום ה- i )כולל( ועד המיקום ה- j )לא כולל(. boolean equals(string s) שיטה במחלקה String המחזירה true אם תוכן המחרוזת s זהה לתוכן המחרוזת שמפעילה את השיטה ו- false אחרת. נספח ב: בנאי במחלקה RuntimeException public RuntimeException(String message) בנאי במחלקה.RuntimeException יוצר חריגת זמן ריצה עם ההודעה message שהתקבלה כפרמטר. ג: נספח שיטה ובנאי מהמחלקה Character public Character(char value) בנאי במחלקה.Character מקבל תו ( char ) כפרמטר ויוצר אוביקט. char charvalue() שיטה במחלקה Character המחזירה את התו העטוף על ידי האוביקט. עמוד 9 מתוך 9