אוניברסיטת בן גוריון בנגב תאריך המבחן: 03.02.20 שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: 202.1.9031 מס' הקורס : הנדסת תעשיה וניהול מיועד לתלמידי : א' מועד א' סמ' שנה תש''ף 3 שעות משך הבחינה : דף פוליו אחד לא מודפס חומר עזר : ולא מצולם. אין להשתמש במחשבון. 100 במבחן זה 5 שאלות. עליך לבחור בארבע שאלות בלבד, המאפשרות לצבור נקודות. רשמו תשובותיכם במחברת התשובות בלבד. מותר להגדיר פעולות עזר בכל השאלות, אלא אם נאמר אחרת. כתבו קוד קריא והקפידו על אינדנטציה והערות )אפשר בעברית(. ב ה צ ל ח ה!
שאלה )25 1 נק'( נתונה התכנית הבאה: public static void what1 (int [ ] arr) for(int i = 0; i < arr.length -1; i++) int minind = what11 (arr, i); what12(arr, minind); } // for } // what1 public static void what12 (int [ ] arr, int i) int value = arr[i]; while (i > 0 && arr[i-1] > value) arr[i] = arr[i-1]; i = i-1; } // while arr[i] = value; } // what12 public static int what11 (int [ ] arr, int from) int ans = from; for(int i = from+1; i < arr.length; i++) if (arr[ans] > arr[i]) ans = i; return ans; } // what11 public static void main(string[ ] args) int testarr [ ] = 2,7,-5,3 }; what1(testarr); for(int m = 0; m < testarr.length; m++) System.out.println( testarr[m] ); } // main א. מהו הפלט של התכנית הנ"ל? )15 נק' ) ב. מה יעודה של הפעולה? what1 )10 נק' )
שאלה )25 2 נק'( א. 15( נק' ) כתבו פעולה לא רקורסיבית s2) String strsub(string s1, String שמקבלת כפרמטרים שתי מחרוזות s1 ו - s2. הפעולה מחזירה מחרוזת חדשה, הבנויה רק מהתווים המופעים במחרוזת s1 שאינם מופיעים במחרוזת s2. לדוגמה, עבור המחרוזות s1 הבאות : ו s2 s1 = a7@b2c3# s2 = d4@a&ec הפעולה מחזירה מחרוזת חדשה 7b23# ב. )10 נק' ) str3 בפעולה main הבאה מוגדרות מחרוזות str2, str1 ו.str3 הוסיפו את הפקודות החסרות בפעולה main הבאה, שמכניסה למחרוזת בעזרת פעלה strsub של סעיף א', את כל התווים שמופיעים רק באחת מהמחרוזות str1 או. str2 public static void main(string[ ] args) String str1 = "c3a@d", str2 = "d@3t", str3; System.out.println(str3); } // main התכנית הנ"ל מדפיסה את המילה cat. הערה: בסעיף ב' חובה להשתמש בפעולה strsub )אפילו אם לא כתבתם(. של סעיף א'
שאלה )25 3 נק'( הפעולה sublist מקבלת כפרמטר רשימה מקושרת חד כיוונית של מספרים שלמים ומחזירה רשימה חדשה )אין לשנות את הרשימה הקיימת( שמכילה רק את כל האברים מהרשימה המקורית שהם בסדר עולה. שימו לב כי כל איבר ברשימה החדשה חייב להצביע על איבר עם ערך גדול ממנו או על.NULL לדוגמא, עבור הרשימה L1 שהפעולה מקבלת כפרמטר L1 : 1 -> 2 -> 4 -> 3 -> 19 -> 2 -> 4 -> 3 -> 2 -> NULL הפעולה sublist מחזירה את הרשימה החדשה L2: L2 : 1 -> 2 -> 4 -> 19 -> NULL עליכם להשלים את הפקודות החסרות. אין להוסיף שורות חדשות או לשנות שורות קיימות. יש לרשום את תשובתכם במחברת התשובות בלבד. public static?? 1?? sublist( List<Integer> lst ) List<Integer> res =?? 2??; Node<Integer> pos =?? 3??; if (pos!=?? 4?? ) Node<Integer> temp = res.insert(?? 5??, pos.getdata()); while(?? 6??! = null ) if( temp.getdata() <?? 7?? )?? 8?? = res.insert(temp, pos.getdata()); pos =?? 9??; } // while } // if return?? 10??; } // sublist
שאלה )25 4 נק'( כתבו פעולה רקורסיבית public static int charnum (String str1, String str2, int i, int j) אשר מקבלת כפרמטרים שתי מחרוזות str1 ו str2 ושני אינדקסים שלהן i ו j. הפעולה מחשבת ומחזירה את מספר התווים הזהים המקסימלי )בסדר המקורי( בשתי המחרוזות. ( במחרוזת str1 מאינדקס i ובמחרוזת str2 מאינדקס.) j דוגמאות: הפעולה charnum תחזיר 6. הפעולה charnum תחזיר 4. charnum ("@bx#acdeyee", "@#cmfdye",0,0) charnum ("ab@acdeyee", "acmfdy@",0,0).0 charnum הפעולה תחזיר charnum ("aba@decee", "x$yz",0,0) הערה 1 : אין להשתמש בלולאות. הערה : 2 אין להשתמש בפעולות עזר נוספות.
שאלה ( 5 25 נק' ) לפניך מחלקה חדר ROOM public class ROOM private int roomnum; private int buildnum; private int seatsnum; private boolean isslide; private int floor; private char condtype; } // ROOM כל עצם במחלקה ROOM מוגדר ע''י התכונות הבאות : roomnum מספר החדר, - buildnum מספר הבניין שהחדר נמצא בו, seatsnum מספר מקומות הישיבה בחדר, TRUE ) isslide אם יש מקרן בחדר, אחרת - FALSE floor, ) מספר קומת החדר, condtype סוג המזגן בחדר )A מזגן מרכזי או M מזגן מיני מרכזי( כמו כן מוגדרת מחלקה בניין BUILD public class BUILD private int buildnum; private int numfloors; private String fname; private ROOM [ ] roomlist; } // BUILD כל עצם במחלקה BUILD מוגדר ע''י התכונות הבאות : buildnum מספר בניין, numfloors מספר הקומות בבניין, - fnme שם המחלקה שהבניין שייך לה, roomlist מערך המאחסן את הנתונים של כל החדרים בבניין הזה. א. ( 10 נק' ) 1. כתבו פעולה בונה מעתיקה constructor) (copy במחלקה.ROOM במחלקה המחזירה הפנייה ( ( לתכונה reference BUILD 2. כתבו פעולה GET.roomList
ב. ( 15 נק' ) במחלקת תעשייה וניהול מחפשים כיתת לימוד המתאימה לדרישות הבאות : מספר מקומות הישיבה לא פחות מ numstud - בחדר חייב להיות מקרן ומזגן מרכזי - קומת החדר עד קומה שנייה, כולל. - כתבו פעולה Test5 אשר מקבלת כפרמטרים הפנייה (reference( למערך מטיפוס BUILD. numstud ומספר מקומות הישיבה בחדר barray הפעולה מחזירה רשימה מקושרת ( list ( Singly linked של נתוני החדרים המספקים את דרישת המחלקה. למעט סידור זה, עליך לשמור שכל חדר ברשימה יישאר המקוריים. על הסדר שהיה במערכים הערה 1 : בסעיף ב' אפשר להשתמש בכל הפעולות של מחלקות Node, String, List )פעולה בונה, פעולות SET ו - GET ) בלי ו - ROOM וגם בפעולות של מחלקות BUILD לממש אותן. הערה 2 : אין להשתמש בפעולות עזר נוספות.