Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
המחלקה Array מחלקות מוכנות המחלקה Array משימה – 1חלק א' ;import java.util.Scanner מחלקה מוכנה נוספת היא המחלקה . Array public class TestArray • הגדירו פרויקט חדש ,פתחו בו מחלקה { חדשה והקלידו בה את המחלקה הבאה: )public static void main(String[] args • הריצו את המחלקה וכתבו מה היא מבצעת { ;int [ ] first _____________________________ ;]first = new int[6 _____________________________ ;)kelet (first ;)pelet (first _____________________________ } ) private static void kelet ( int [ ] x { ;)Scanner input = new Scanner(System.in ) for (int i=0; i<6; i++ { ;) System.out.println ("enter item "+ i _____________________________ • ההוראה int [ ] first; :מגדירה משתנה בשם ___________ שיכול להכיל הפניה לעצם מטיפוס מערך. ;)(x[ i ] = input.nextInt מערך ) (arrayהוא עצם שמכיל מספר } } נתונים מאותו סוג .במקרה שלנו ,הנתונים שהמערך יכיל יהיו מטיפוס מספר שלם. שימו לב ,בשלב זה עדיין לא נקבע מספר ) private static void pelet (int [ ] ar { ;)" System.out.println ("the numbers in the array: ) for (int i=0; i<6; i++ הנתונים שהמערך יכיל! • ההוראה ;] first = new int[6יוצרת עצם ;) ] System.out.println ("item number "+i+" is "+ar[ i } יחיד מטיפוס מערך שיכיל 6נתונים )כל } אחד מהם מטיפוס מספר שלם( ומציבה הפניה לעצם הנוצר בתוך המשתנה ____________________. • לכל נתון )איבר( במערך יש מספר סידורי המציין את מיקומו במערך .המיקום של נתון )איבר( במערך נקרא מציין )אינדקס( .המציין של הנתון הראשון הוא תמיד המספר ,0המציין של הנתון השני הוא המספר 1וכן הלאה .לכן במערך שלנו המציינים הם המספרים __________________________. • פנייה לאיבר במערך ] :מציין האיבר [ שם המערך למשלx[i] , • הגדרת מערך כפרמטר של פעולה: בחתימה של הפעולה: למשלprivate static void (int [ ] ar) , המערך( ) שם המערך ] [ טיפוס המערך הפעולה keletהיא פעולה מקובלת ל_________________________________________________ הפעולה peletהיא פעולה מקובלת ל_________________________________________________ © כל הזכויות שמורות ,ד"ר תמר פז עמוד מספר 1 המחלקה Array מחלקות מוכנות משימה – 1חלק ב' כמו ביצירת העצמים האחרים ,ניתן לאחד את הגדרת המשתנה עם יצירת העצם החדש והצבת ההפניה אליו בתוך המשתנה .מחקו כעת את שתי ההוראות המודגשות בתוך הפעולה הראשית ) (mainוכתבו במקומן הוראה אחת . int [ ] first = new int [6]; :הוראה זו מגדירה את המשתנה , firstיוצרת מערך בעל 6איברים ומציבה הפניה אליו במשתנה _________________. שימרו ,הריצו ובדקו שהתקבל הפלט הרצוי. משימה – 1חלק ג' אורך המערך )מספר האיברים( יכול גם להיות משתנה .הוסיפו לפעולה הוראות לקליטת אורך המערך, ושנו את הגדרת המערך כך שיהיה מהאורך הנקלט .הקפידו לשנות בהתאם גם את גבולות הלולאות בפעולות keletו.pelet - שימרו ,הריצו ובדקו שהתקבל הפלט הרצוי. מערך הוא עצם שמכיל מספר נתונים מאותו הסוג! הוראה להגדרת משתנה שיכיל הפניה לעצם מטיפוס מערך ; :שם המשתנה ] [ טיפוס נתונים למשלint [ ] grades; , הפעלת הפעולה הבונה של עצם מטיפוס מערך היא כמו הפעלה של הפעולה הבונה של עצמים אחרים. לכן ,הוראה ליצירת עצם מטיפוס מערך והצבת הפניה אליו בתוך משתנה: ]אורך המערך [ טיפוס נתונים = newשם המשתנה למשלgrades = new int [10]; , כמו ביצירת העצמים האחרים ,ניתן לאחד את הגדרת המשתנה עם יצירת העצם החדש והצבת ההפניה אליו בתוך המשתנה: ]אורך המערך [ טיפוס נתונים = newשם המשתנה ] [ טיפוס נתונים למשלint[ ] grades = new int[35]; , • מספר האיברים שהמערך יכיל נקבע רק בעת הפעלת הפעולה הבונה. • לכל איבר במערך יש מספר סידורי המציין את מיקומו במערך .המציין )אינדקס( של האיבר הראשון הוא המספר 0והמציין של האיבר האחרון הוא ) -1מספר האיברים במערך( • גם המחלקה Arrayמיובאת באופן אוטומטי על-ידי סביבת העבודה ומוכרת בכל הפרויקטים. עמוד מספר 2 © כל הזכויות שמורות ,ד"ר תמר פז Array המחלקה מחלקות מוכנות ' חלק א- 2 משימה import java.util.Scanner; ציונים ופולטת5 המחלקה הבאה קולטת public class AboveAverage .את מספר הציונים שגבוהים מהממוצע { public static void main(String[] args) • המחלקה נמצאת בקובץ { הריצו ובדקו, פיתחו.aboveAverage int [ ] grade = new int[5]; double ave; .שהפלט מתאים לנתונים שהקלדתם int big_ave; • מערך הוא עצם שמכיל מספר kelet (grade); pelet (grade); grade למשל.נתונים מאותו טיפוס ave = average (grade); הוא מערך שמכיל ______ נתונים big_ave = big_from_num (grade,ave); System.out.println (big_ave +" grades high from average"); } private static void kelet ( int [ ] grade ) { Scanner input = new Scanner(System.in); for (int i=0; i<5; i++ ) הואar הפרמטר: pelet • בפעולה .__________________ מטיפוס { :• משמעות ההוראה System.out.println ("enter grade "+ i ); grade[ i ] = input.nextInt(); } } private static void pelet (int [ ] ar ) { System.out.println ("the grades are "); . ______________ מטיפוס פניה לאיבר מספר grade במערךi הגדרת מערך כפרמטרar של הפעולה : היאgrade [i]=input.nextInt(); _________ קלוט ערך לאיבר מספר __________________ במערך for (int i=0; i<5; i++ ) System.out.println (ar[ i ] ); } ' חלק ב-2 משימה פניה לאיבר מספר ar במערךi private static double average (int [ ] a ) { int sum = 0; for (int i=0; i<5; i++ ) הוסיפו למחלקה את ההוראות הדרושות כך שתפלוט גם את מספר הציונים .55 -הנמוכים מ .יש להוסיף פעולה חדשה sum = sum + a [ i ] ; return sum /5; } private static int big_from_num (int [ ] a, double num) { int count =0; for (int i=0; i<5; i++ ) if (a [ i ]>num) count = count+1; return count; } ' חלק ג- 2 משימה הוסיפו למחלקה את ההוראות הדרושות כך שתפלוט את הממוצע ואת ההפרשים : עבור הקלט, למשל.מהממוצע : הפלט יהיה, 100 90 80 88 92 The average is 90 The differences are: 10 0 10 2 2 .יש להוסיף פעולה חדשה } 3 עמוד מספר ד"ר תמר פז,© כל הזכויות שמורות המחלקה Array מחלקות מוכנות משימה – 3חלק א' המחלקה הבאה מגדירה מערך שמכיל 6 ;import java.util.Scanner public class CharArray תווים ,מציבה תווים במערך ופולטת את ערכי המערך. { ;final static int N=6 הקלידו את המחלקה והריצו אותה. • במחלקה מוגדר קבוע גלובלי בשם: ___________. • איברים של מערך יכולים להיות מכל טיפוס נתונים המוכר בשפה! למשל ,איברי המערך tavimהם )public static void main(String[ ] args { ;]char [ ] tavim = new char [N ;)put (tavim ;)pelet (tavim } ) private static void put ( char [ ] x { ) for (int i=0; i<N; i++ מטיפוס _________________ )if (i %2 == 0 ;'x [i] = 'a else משימה – 3חלק ב' שנו את הגדרת הקבוע כך: ;final static int N=8 הריצו את המחלקה וכתבו מה בוצע ___ ;'x [i] = 'b } )private static void pelet (char [ ] tavim { ;)"System.out.println ("the chars in array: ) for (int i=0; i<N; i++ ____________________________ ;) ] System.out.println ("item number "+i+" is "+tavim[ i } ____________________________ } ____________________________ אפשר להגדיר מערך שיש בו Nאיברים. כאשר Nהוא ________________. במקרה כזה ,המציינים הם המספרים: ______________________________ עמוד מספר 4 © כל הזכויות שמורות ,ד"ר תמר פז Array המחלקה מחלקות מוכנות 4 משימה import java.util.Scanner; public class TestArray4 פיתחו מחלקה חדשה והקלידו בה את .המחלקה הבאה { final static int NUM=6; : הריצו והשלימו,שימרו public static void main(String[] args) גם,כמו בהעברת עצמים אחרים { Scanner input = new Scanner(System.in); int [ ] first = new int[NUM]; System.out.println ("enter 6 numbers to first array"); for (int i=0;i<NUM; i++) first[i]=input.nextInt(); assignment (first); System.out.println ("in first"); for (int i=0;i<NUM;i++) System.out.println ("item number " +i+" is " +first[i]); הפרמטר,בהעברת מערך כפרמטר .המועבר הוא הפניה למערך הפעולה מקבלת ממי שמזמן אותה הפניה לעצם מטיפוס מערך ולא את המערך עצמו! ובכל ההתייחסויות לפרטר הפעולה משתמשת במערך שההפניה אליו .נמצאת בפרמטר לאחר הפעלת הפעולה,לכן } private static void assignment (int[ ] a1) הערכים של אברי,assignment המערך הם הערכים שהוצבו בו { Scanner input = new Scanner(System.in); assignment בפעולה for (int i=0;i<NUM; i++) a1[i]=99; System.out.println ("in a1"); for (int i=0;i<NUM;i++) System.out.println ("item number " + i+" is " +a1[i]); } pelet הפעולה,מאותה סיבה מתייחסת למערך3 במשימה ידי הפעולה-שעודכן על .___________________ } אנחנו,בהעברת עצם כפרמטר מעבירים את ההפניה לעצם ולא !את העצם עצמו 5 עמוד מספר ד"ר תמר פז,© כל הזכויות שמורות המחלקה Array מחלקות מוכנות משימה 5 כתבו מחלקה שתגדיר מערך בעל 9איברים מטיפוס מספר שלם. המחלקה תבצע את הפעולות הבאות: א .תציב את המספר 0בכל האיברים של המערך. ב .תציב את המספר 1בכל האיברים שהמציין שלהם הוא איזוגי. ג .תציב את המספר 2בכל האיברים שהמציין שלהם הוא זוגי. ד .תוסיף את המספר 3לכל האיברים שהמציין שלהם מתחלק ב – . 3 ה .תדפיס את המערך. בסיום הרצת המחלקה, • המספר 1נמצא באיברים הבאים__________________________ : • המספר 4נמצא באיבר הבא_____________________________ : • באיבר שהמציין שלו הוא 0נמצא המספר_____________________ : • באיבר שהמציין שלו הוא 8נמצא המספר_____________________ : משימה - 6חלק א' כתבו מחלקה שקולטת מערך של 30תוים ותו נוסף .tavהמחלקה תודיע כמה פעמים tavמופיע במערך. תזכורת :קלט של תוinput.next().chatAt(0); : משימה - 6חלק ב' כתבו מחלקה שקולטת מערך של 30תוים ותו נוסף .tavהמחלקה תודיע מהו המקום הראשון במערך בו מופיע התו הנוסף .tav במקרה שהתו הנוסף אינו מופיע כלל במערך ,על המחלקה להדפיס הודעה מתאימה. כתבו פעמיים את הפעולה למציאת המקום הראשון ש tav -מופיע במערך .פעם אחת בעזרת לולאת מונה ) ,(forופעם נוספת בעזרת לולאת כל-עוד ).(while משימה – 7חלק א' כתבו פעולה shiftRightשתקבל שני מערכים num1ו num2 -באורך .20המערך num1מכיל מספרים שלמים .הפעולה תמלא את המערך num2כך שאיבריו יהיו מוזזים מקום אחד ימינה ביחס למערך num1 )בנוסף ,האיבר האחרון יהפוך להיות ראשון( .דוגמא: 57 3 6 12 num2המערך ה"מוזז" 82 82 3 57 6 num1המערך המקורי • כתבו פעולה ראשית שתבנה שני מערכים ,הפעולה תקלוט 20מספרים שלמים לאחד מהם ,תזמן את הפעולה ShiftRightעם שני המערכים ותפלוט את הערכים של שני המערכים. עמוד מספר 6 © כל הזכויות שמורות ,ד"ר תמר פז המחלקה Array מחלקות מוכנות משימה – 7חלק ב' כתבו פעולה shiftLeftשתקבל מערך אחד באורך 20המכיל תווים .הפעולה תזיז כל איבר מקום אחד שמאלה ביחס למקומו המקורי )בנוסף ,האיבר הראשון יהפוך להיות אחרון( .דוגמא: a @ ! x 6 המערך ה"מוזז" ! x @ 6 a המערך המקורי שימו לב :הפעם יש לבצע את התזוזה שמאלה באותו המערך ולא להעתיק למערך אחר! רמז :יש להשתמש בהוראהa[ i ] = a[ i+1] : • כתבו פעולה ראשית שתבנה מערך ,תקלוט אליו 20תווים ,תפלוט את הערכים של המערך ,תזמן את הפעולה ShiftLeftותפלוט את הערכים של המערך לאחר ביצוע הפעולה. משימה – 8חלק א' פיתחו מחלקה חדשה והקלידו בה את המחלקה הבאה. שימרו ,הריצו והשלימו: בפעולה הראשית יש הצהרה על שני משתנים שיכילו הפניה לעצם מטיפוס מערך first :ו.__________ - בכל מערך יש _______ איברים מטיפוס ___________________________________. העברת מערך כפרמטר היא תמיד העברה של הפניה למערך! לכן הפעולה keletמעדכנת בכל זימון שלה איברים של מערך אחר .כלומר בזימון ) kelet (firstהיא מעדכנת את האיברים של המערך ____________ ובזימון ) kelet (secondהיא מעדכנת את האיברים של המערך _________ © כל הזכויות שמורות ,ד"ר תמר פז ;import java.util.Scanner public class TwoArrays { ;final static int N=4 )public static void main(String[] args { ;]int [ ] first = new int [N ;]int [ ] second = new int [N ;)"System.out.println ("input- first array ;)kelet (first ;)"System.out.println ("input- second array ;)kelet (second ;)"System.out.println ("output- first array ;)pelet (first ;)"System.out.println ("output- second array ;)pelet (second } )private static void kelet (int [ ] x { ;)Scanner input = new Scanner(System.in ) for (int i=0; i<N; i++ { ;) System.out.println ("enter item "+ i ;)(x[i]=input.nextInt } } )private static void pelet (int [ ] ar { ;)" System.out.print ("the numbers in array: ) for (int i=0; i<N; i++ ;) ] System.out.print (" "+ ar[ i ;)" "( System.out.println } עמוד מספר 7 } Array המחלקה מחלקות מוכנות ' – חלק ב8 משימה .הוסיפו למחלקה את ההוראות הדרושות כך שיודפס גם הערך הגבוה ביותר בכל אחד מהמערכים . יש לכתוב תחילה פעולה שמקבלת מערך ומחזירה את הערך הגדול ביותר במערך:הדרכה ' – חלק ג8 משימה import java.util.Scanner; public class TwoArrays { final static int N=4; public static void main(String[] args) second נשנה כעת את המחלקה כך שהמערך .2*N יהיו מגודל ,לשם כך . שנו את המחלקה בהתאם למחלקה הבאה.א שנו בהתאם גם את החלקים שהוספתם.ב { int [ ] first = new int [N]; .בסעיף הקודם int [ ] second = new int [N*2]; System.out.println ("input- first array"); :הריצו את המחלקה והשלימו kelet (first , N); System.out.println ("input- second array"); kelet (second , N*2); second - וfirst מספר האיברים במערכים אינו שווה ובכל זאת השתמשנו באותן System.out.println ("output- first array"); pelet (first , N); System.out.println ("output- second array"); pelet (second , N*2); } private static void kelet (int [ ] x , int num) { Scanner input = new Scanner(System.in); for (int i=0; i<num; i++ ) { System.out.println ("enter item "+ i ); ( כדי לעבור על כלkelet, pelet) פעולות !!האיברים של שני המערכים :מסקנה אפשר להעביר לפעולה מערכים ששונים זה _________________________ מזה ב .ושווים בטיפוס של האיברים x[i]=input.nextInt(); } } private static void pelet (int [ ] ar , int num) { System.out.println ("the numbers in array: "); for (int i=0; i<num; i++ ) System.out.print (" "+ ar[ i ] ); System.out.println (" "); } } ד"ר תמר פז,© כל הזכויות שמורות 8 עמוד מספר מחלקות מוכנות המחלקה Array משימה – 9חלק א' חמישה תלמידים קופצים למרחק בתחרות גמר .כל תלמיד קופץ 4קפיצות. כתבו מחלקה שקולטת את 4התוצאות של כל אחד מהתלמידים .המחלקה תדפיס את ממוצע הקפיצות של כל תלמיד וכן את מספר התלמיד ) (0-4שהשיג את הממוצע הגבוה ביותר. רמז :צריך לבנות מערך שיכיל את חמשת הממוצעים. משימה – 9חלק ב' הוסיפו למחלקה את ההוראות הדרושות כך שתקלוט גם את השמות של התלמידים ,ובמקום לפלוט את מספר התלמיד שהשיג את הממוצע הגבוה ביותר ,הפעולה תפלוט את שמו. רמז :צריך לבנות מערך נוסף שיכיל את חמשת השמותString [] names = new String [5]; . איברים של מערך יכולים גם להכיל הפניה לעצם מטיפוס מחרוזת משימה – 10חלק א' המטרה :כתיבת מחלקה שקולטת תוצאות של 14משחקי הכדורגל שנערכו בשבוע מסוים )התוצאות יכולות להיות 1או 2או ,( xוכן את טופס הניחושים שמילא מנחש בטוטו .המחלקה תבדוק כמה ניחושים היו נכונים ותדפיס אחת מבין 3ההודעות הבאות :הצלחת בכל )במקרה של 14ניחושים נכונים( ,כמעט מוצלח )במקרה של 12-13ניחושים נכונים( ,לא הצלחת )במקרה של 11ניחושים או פחות(. הנחיות: א .הגדירו שני משתנים שתהיה בהם הפניה למערך שמכיל 14תווים )אחד לקליטת הטופס הנכון ואחד לקליטת הטופס שמילא המנחש(. ב .הגדירו פעולה לקליטת 14נתונים למערך. ג .הגדירו פעולה לבדיקת מספר הניחושים הנכונים. ד .הגדירו פעולה להדפסת ההודעה המתאימה. ה .כתבו את הפעולה הראשית ).(main משימה – 10חלק ב' שנו את המחלקה מהסעיף הקודם כך שתתבצע עבור מספר מנחשים .לאחר שתדפיס הודעה מתאימה עבור מנחש יחיד ,המחלקה תשאל את המשתמש אם ברצונו להמשיך .במקרה של תשובה חיובית ,יקלט טופס הניחושים של מנחש חדש ותודפס ההודעה המתאימה .התהליך יפסק כאשר המשתמש יענה כי אינו רוצה להמשיך. שימו לב ,אין צורך לקלוט את התוצאות הנכונות עבור כל מנחש. © כל הזכויות שמורות ,ד"ר תמר פז עמוד מספר 9 Array המחלקה import java.util.Scanner; public class TwoArrays { final static int N=6; public static void main(String[] args) { int [ ] a = new int [N]; int [ ] b = new int [N]; int [ ] c = new int [N]; int count; kelet (a); kelet (b); count = new_array (a,b,c); pelet (c,count); } public static void kelet (int [ ] ar) { Scanner input = new Scanner(System.in); for (int i=0; i<N; i++ ) { System.out.println ("enter item "+ i ); ____________________________________; } } public static void pelet (int [ ] ar, int count ) { System.out.print ("the numbers in array: "); for (int i=0; i<count; i++ ) System.out.print (" "+ ar[ i ] ); System.out.println (" "); } public static int new_array (int [ ] a, int [ ] b, int [ ] c) { int count = 0; for (int i= 0; i<N; i++) for (int j= 0; j<___________; j++) if (a[i] == b[j] ) { c[count] = a[i]; count ____________; } return count; } מחלקות מוכנות ' – חלק א11 משימה לפניכם שלד של מחלקה שקולטת ערכים c ובונה מערך חדש,b - וa לשני מערכים מכיל, כלומר. b - וa שהוא מערך החיתוך של .b - וגם בa -את כל הערכים שמופיעים גם ב לא יופיע אותו, בכל אחד מהמערכים:הנחה .ערך יותר מפעם אחת . הקלידו והריצו,• השלימו • הסבירו מה התפקיד של המשתנה ______________________ ?count ____________________________ ____________________________ ___________________________ הואcount • אם בסיום המחלקה הערך של ______________________ סימן ש3 _____________________________ הואcount • אם בסיום המחלקה הערך של ______________________ סימן ש0 _____________________________ • הסבירו מה התפקיד של הלולאה המקוננת ?new_array בתוך הפעולה ____________________________ ____________________________ ____________________________ ' חלק ב- 11 משימה יהיה מערךc שנו את המחלקה כך שהמערך כלומר יכיל גם את.b - וa האיחוד של וגם את הערכיםa -הערכים שמופיעים ב , ערך שמופיע בשני המערכים.b -שמופיעים ב . רק פעם אחתc יופיע ב } ד"ר תמר פז,© כל הזכויות שמורות 10 עמוד מספר המחלקה Array מחלקות מוכנות משימה 12 כתבו מחלקה שמבצעת את הפעולות הבאות: א .מגדירה שני מערכים באורך 7שמכילים מספרים שלמים. ב .מציבה בכל אחד מהאיברים של כל אחד מהמערכים מספרים אקראיים בתחום .10-20 ג .מודיעה עבור כל אחד מהאיברים של המערך הראשון ,כמה פעמים הוא מופיע במערך השני. הדרכה :כיתבו תחילה פעולה שמקבלת מערך באורך 7ומספר נוסף ומחזירה את מספר הפעמים שהמספר הנוסף מופיע במערך. משימה 13 כתבו מחלקה שתגריל 50מספרים שלמים בתחום שבין 0לבין .10המחלקה תחשב ותפלוט את מספר הפעמים שהוגרל כל מספר. הערה :יש להשתמש במערך של מונים. משימה 14 מבוסס על משימה של ויקי סכניני במדינת "הכל אפשרי" רשומות 10מפלגות ממוספרות .9...0 כתבו מחלקה שקולטת עבור כל מפלגה את מספר החברים שלה בבית הנבחרים .המחלקה תדפיס את מספר המפלגה שיש לה מספר גדול ביותר של חברים בבית הנבחרים )במידה ויש יותר ממפלגה אחת כזו, יש להדפיס את כולן( .למשל, אם מספרי החברים בבית הנבחרים הם )משמאל לימין(2 20 33 12 5 10 10 17 12 28 : אזי המחלקה תודיע כי למפלגה מספר 2יש מספר גדול ביותר של חברים בבית הנבחרים. ואם מספרי החברים בבית הנבחרים הם )משמאל לימין(2 20 30 12 5 10 10 18 12 30 : אזי המחלקה תודיע כי למפלגות מספר 2ו 9 -יש מספר גדול ביותר של חברים בבית הנבחרים. הערות: א .הקלט תקין. ב .יש להשתמש לפחות בשתי פעולות בנוסף לפעולה הראשית. משימה 15 מבוסס על בחינת בגרות מערך יקרא מערך "יפה" אם איבריו הם רצף של שלושה מספרים החוזרים על עצמם )יתכן כי לא מספר שלם של פעמים( .למשל ,המערך הבא הוא מערך "יפה": 5 7 8 7 5 8 7 5 8 7 5 כתבו פעולה ראשית שתקלוט איברים למערך חד מימדי באורך Nותפלוט הודעה האם המערך הוא מערך "יפה" או שאינו "יפה" N .הוא קבוע שיוגדר בתחילת המחלקה. כתבו תחילה פעולה משנית שתקבל הפניה למערך ,תחזיר trueאם המערך הוא "יפה" ,ותחזיר false אחרת. © כל הזכויות שמורות ,ד"ר תמר פז עמוד מספר 11 המחלקה Array מחלקות מוכנות מערך שכל איבר בו מכיל הפניה לעצם משימה – 16חלק א' ;import java.util.Scanner לפניכם המחלקה .HighJump public class HighJump • לכל עצם מהמחלקה HighJumpיש שתי { // The attributes of the class תכונות name :ו ________________. ;private String name • על עצם מטיפוס HighJumpניתן לבצע 4 ;private double high פעולות: ;)Scanner input = new Scanner(System.in .1פעולה בונה שיוצרת עצם מטיפוס . HighJumpהפעולה כן /לא )מחקו // A constructor for the class את המיותר( מקבלת פרמטר. ) ( public HighJump { הפעולה מבצעת: ;)"System.out.println ("enter student name קולטת מהמשתמש שם של תלמיד ;)(this.name = input.next ומכניסה אותו לתכונה _________, ;)(this.high = averageHigh קולטת מהמשתמש ארבע תוצאות של } קפיצה למרחק שהתלמיד קפץ // Methods: )באמצעות הפעולה (averageHigh )(public String getName ומכניסה לתכונה _______________ { ;return this.name את הערך הממוצע שלהן. } למשל עבור הקלט: )(public double getAverageHigh hagar 1.35 2.00 1.54 1.63הפעולה { תכניס לתכונה nameאת הערך , hagar ;return this.high } ולתכונה highהיא תכניס את הערך 1.63 )( private double averageHigh )שהוא הממוצע של 4הקפיצות של הגר(. { .2פעולה getNameשלא מקבלת אף ;double sum =0 פרמטר ומחזירה את הערך של התכונה )for (int i=1; i<=4; i++ ______________. .3פעולה getAverageHighשלא מקבלת { ;)System.out.println ("enter result number " + i אף פרמטר ומחזירה את ____________ _____________________________. .4פעולה averageHighשתפקידה ______ ;)(sum = sum + input.nextDouble } ;)return (sum/4 } // end of class ______________________________ ______________________________. averageHighהיא פעולה בעלת הרשאה פרטית. זו פעולה פנימית של המחלקה HighJumpשאיננו רוצים לאפשר למשתמש להפעיל אותה. עמוד מספר 12 © כל הזכויות שמורות ,ד"ר תמר פז המחלקה Array מחלקות מוכנות • פתחו פרויקט חדש ) --- Next> --- Finishהקלדת שם הפרויקט (File ---New --- Project.. --- Next --- • בפרויקט החדש ,פתחו מחלקה חדשה בשם HighJumpוהקלידו בה את המחלקה. בשלב זה ,אפשר לתקן שגיאות תחביר אבל עוד אי אפשר לבדוק את המחלקה שכתבתם. משימה – 16חלק ב' האיברים של המערכים שהגדרנו עד כה הכילו טיפוסי נתונים שמוגדרים בשפה )למשל ,מספר שלם ומספר ממשי( .באותו אופן ,ניתן להגדיר מערך שכל אחד מאיבריו יכיל הפניה לעצם! למשל ,ההוראה הבאה: ;] HighJump [] student = new HighJump [5מגדירה משתנה בשם __________________ שיכיל הפניה לעצם מטיפוס מערך בעל ________________ איברים .כל אחד מהאיברים יכיל הפניה לעצם מטיפוס . HighJump במשימה 9ב' כתבנו מחלקה שקולטת עבור כל אחד מחמישה תלמידים את שמו וארבע תוצאות של קפיצה למרחק .המחלקה פלטה את השם של התלמיד שהשיג את ממוצע הקפיצות הגבוה ביותר .למשל, עבור הקלטhagar 1.35 2.00 1.54 1.63 : ron 2.01 1.88 1.65 1.70 amit 1.99 2.02 1.44 1.55 dan 1.88 1.77 1.67 1.99 uri 1.44 1.88 1.76 1.65 המחלקה פלטה כי danהשיג את הממוצע הגבוה ביותר. לפתרון המשימה הגדרנו שני מערכים .מערך אחד בו שמרנו את השמות של התלמידים ,ומערך נוסף בו שמרנו את חמשת הממוצעים. נפתור כעת את אותה המשימה אבל הפעם נשתמש במערך יחיד .כל איבר במערך יכיל הפניה לעצם שיהיו לו שתי תכונות :שם של תלמיד וממוצע הקפיצות .למשל ,עבור הדוגמה לעיל ,האיבר הראשון יכיל הפניה לעצם שהתכונה שם שלו תהיה hagarוהתכונה גובה ממוצע תהיה .1.63האיבר השני יכיל הפניה לעצם שהתכונה שם שלו תהיה ronוהתכונה גובה ממוצע תהיה 1.81וכן הלאה .כלומר ,כל איבר במערך יכיל הפניה לעצם מטיפוס _______________________. בעמוד הבא מופיע שלד של המחלקה הראשית לפתרון הבעיה. • השלימו את המחלקה. • בפרויקט בו הגדרתם את המחלקה ,HighJump ] [ HighJump פתחו מחלקה חדשה בשם StudentJumpוהקלידו 4 2 3 1 0 בה את המחלקה שהשלמתם. • שימרו הריצו ובדקו כי התקבל הפלט הרצוי. HighJump HighJump HighJump HighJump HighJump high name high name high name high name high 1.68 uri 1.83 dan 1.75 amit 1.81 ron 1.63 © כל הזכויות שמורות ,ד"ר תמר פז name עמוד מספר 13 hagar המחלקה Array מחלקות מוכנות public class StudenJump { )public static void main(String[ ] args הפעלת הפעולה הבונה לבניית עצם מטיפוס מערך בעל 5איברים { שכל אחד מהם יכיל הפניה לעצם ;]HighJump [ ] student = new HighJump [5 מטיפוס HighJump ;)kelet (student ;)int numHigh = highest (student ;)"System.out.println (student[numHigh].getName() + " achieved the highest average } )public static _____________ kelet (HighJump [ ] ar { הפעלת הפעולה הבונה לבניית עצם מטיפוס ) for (int i=0; i<5; i++ HighJumpוהצבת הפניה לעצם בתא מספר i ;)( ar[i] = new HighJump במערך. } )public static int highest (HighJump [ ] ar פעולה שמקבלת את המערך ומחזירה את המיקום של בעל הקפיצה הממוצעת הגבוהה ביותר { // ;int numHigh = 0 ) for (int i=1; i<________________; i++ ) )(if (ar[i]. getAverageHigh() > ar[numHigh]. getAverageHigh ;numHigh= i ;______________________ return } } // end of class השלימו: • הפעולה keletדואגת לבנות 5עצמים מטיפוס __________________ ולהציב הפניות אליהם בתאים של המערך. • בלולאה שבפעולה ,highestהערך ההתחלתי של מונה הלולאה ) (iהוא 1ולא 0משום ש_______ ___________________________________________________________________ __________________________________________________________________. • משמעות הביטוי ar[numHigh]. getAverageHigh() :היא הפעלת הפעולה getAverageHighעל העצם שנמצא בתא מספר numHighבמערך __________________. • בהוראת התנאי if (ar[i]getAverageHigh() > ar[numHigh]. getAverageHigh()) :בודקים אם הגובה הממוצע של העצם שנמצא בתא מספר ________ גדול מהגובה הממוצע של העצם שנמצא בתא מספר . numHigh • הפעלה של פעולה הפועלת על עצם) :פרמטרים( שם הפעולה.משתנה שמכיל הפניה לעצם במקרה של מערך ,ההפניה לעצם נמצאת בתא של המערך! . לכן ,הפעלה של פעולה) :פרמטרים( פעולה ]מספר תא[ שם המערך עמוד מספר 14 © כל הזכויות שמורות ,ד"ר תמר פז המחלקה Array מחלקות מוכנות איברים של מערך יכולים להכיל הפניה לעצם! • הגדרת עצם מטיפוס מערך ,יצירת העצם והצבת ההפניה אליו בתוך משתנה: ]אורך המערך [ טיפוס נתונים = newשם המשתנה ] [ טיפוס נתונים כאשר האיברים של המערך יכילו הפניה לעצם ,טיפוס הנתונים הוא המחלקה .למשל ,ההוראה ] HighJump [ ] student = new HighJump [5מגדירה משתנה בשם studentשיכיל הפניה לעצם מטיפוס מערך בעל 5איברים .כל אחד מהאיברים יכיל הפניה לעצם מטיפוס . HighJump • ההוראה ] HighJump [ ] student = new HighJump [5מפעילה את הפעולה הבונה של המערך. בשלב זו עוד לא נבנו העצמים מטיפוס !! HighJump • ההוראה ;)( ar[i] = new HighJumpמפעילה את הפעולה הבונה של .HighJumpההוראה בונה עצם יחיד מטיפוס HighJumpומציבה הפניה אליו בתא מספר _____________במערך. . • הגישה לעצמים היא באמצעות תאי המערך) :פרמטרים( פעולה ]מספר תא[ שם המערך משימה – 17חלק א' במשרד הפנים שומרים עבור כל אחד מתושבי המדינה את מספר תעודת הזהות שלו ואת שמו. כתבו תכנית שתקלוט את האינפורמציה הזו עבור 20תושבים ,לאחר מכן התכנית תקלוט זוגות של נתונים :מספר תעודת זהות ושם .התכנית תדאג לשנות את השם של בעל תעודת הזהות לשם החדש. קליטת הנתונים תפסק עם קליטת מספר תעודת זהות שלילי )אין לקלוט שם עבור מספר זה(. לסיום ,התכנית תפלוט את רשימת מספרי הזהות והשמות המעודכנים. לצורך פתרון המשימה נגדיר שתי מחלקות :מחלקה Citizenבה נשמור אינפורמציה עבור תושב יחיד. ומחלקה עם פעולה ראשית. האינפורמציה שצריכים לשמור עבור כל תושב היא :מספר תעודת הזהות שלו ו ______________. בעמוד הבא מופיע שלד של המחלקה .Citizen © כל הזכויות שמורות ,ד"ר תמר פז עמוד מספר 15 המחלקה Array מחלקות מוכנות • השלימו את המחלקה. ;import java.util.Scanner • השלימו: public class Citizen { הפעולה getIdמחזירה את ;private int id ____________________ ;private String name ____ של העצם הנוכחי. ;)Scanner input = new Scanner(System.in הפעולה setNameמעדכנת ) ( public Citizen את השם של התושב הנוכחי. { ;)"System.out.println ("enter citizen ID number הפעולה מקבלת מחרוזת ;)(this.id = input.nextInt ומשנה את התכונה nameשל העצם הנוכחי להיות ;)"___________________________"( System.out.println ;)(this.name = input.next ____________________ } שהתקבלה כפרמטר. )(public int getId { • פתחו מחלקה חדשה בשם ;return this.id } Citizenוהקלידו בה את )public void setName (String newName המחלקה. { תזכורת :בשלב זה ,אפשר לתקן ;this.name = newName שגיאות תחביר אבל עוד אי } אפשר לבדוק את המחלקה )(public void printCitizen שכתבתם. { ;)________________ System.out.println("citizen id is: " + משימה – 17חלק ב' ;)System.out.println("citizen name is: " + this.name } נפנה כעת לפתרון המשימה. } אלגוריתם לפתרון המשימה: .1נגדיר וניצור מערך מגודל 20שבכל איבר שלו תהיה הפניה לעצם מטיפוס Citizen .2ניצור 20עצמים מטיפוס Citizenונציב במערך את ההפניות אליהם. .3נקלוט מספר תעודת זהות. .4כל עוד המספר הנקלט ___________________________ ,נבצע: .4.1נקלוט שם. .4.2נשנה את השם של בעל תעודת הזהות. 4.3נקלוט מספר תעודת זהות. .5נפלוט את מספרי תעודת הזהות והשמות. עמוד מספר 16 © כל הזכויות שמורות ,ד"ר תמר פז המחלקה Array מחלקות מוכנות לפניכם שלד של המחלקה הראשית )מספור ;import java.util.Scanner 1 השורות איננו חלק מהמחלקה והוא מופיע public class MainCitizen 2 { 3 ;final static int N=20 4 )public static void main(String[] args 5 { 6 7 פה לצורך הדיון(. • השלימו את המחלקה. • ההוראה )סמנו את התשובה הנכונה( ;]Citizen [ ] all = new Citizen [N ;)Scanner input = new Scanner (System.in .1בונה עצם מטיפוס מערך בניית המערךCitizen [ ] all = new Citizen [N]; // 8 )for (int i=0; i<N; i++ 9 .2בונה Nעצמים מטיפוס Citizen יצירת התושביםall[i] = new Citizen (); // ;)change (all • תפקיד הלולאה שבשורות 9-10הוא לבנות 11 ;)______________( 12 print } 13 _______ עצמים מטיפוס ,Citizen ולהציב בכל אחד מהתאים של המערך 10 )14 private static void change (Citizen [ ] all הפניה לעצם יחיד. { 15 ;16 String name • ההוראה )( all[i]=new Citizenבונה עצם ;int id 17 יחיד מטיפוס Citizenומציבה הפניה אליו ;)"System.out.println("enter id you want to change 18 ;)(id=input.nextInt 19 )____________ > while (id 20 { 21 22 בתא מספר _______ במערך. • הוראת התנאי בשורה 25בודקת אם מספר תעודת הזהות של העצם שההפניה ;)"System.out.println("enter new name אליו נמצאת בתא מספר _______ שווה ל ____________________________. ;)(name=input.next 23 )for(int i=0; i<N; i++ 24 )if(all[i].getId() == id ;)all[i].setName(name • ההוראה שבשורה 26דואגת ל________ ____________________________ ____________________________. • הפעולה printעוברת על כל תאי המערך. 25 26 27 ;)"System.out.println("enter id you want to change 28 ;)(______________=input.nextInt } 29 } 30 )31 private static void print (Citizen [ ] all הפעולה מפעילה את הפעולה _____________ על כל אחד מהעצמים שההפניה אליהם נמצאת במערך. { 32 )for(int i=0; i<_________; i++ 34 ;)(all[i].printCitizen } 35 36 } // end class • פתחו מחלקה חדשה באותו הפרויקט בו הקלדתם את המחלקה Citizenוהקלידו בה את המחלקה הנוכחית. • שימרו הריצו ובדקו כי התקבל הפלט הרצוי. © כל הזכויות שמורות ,ד"ר תמר פז 33 עמוד מספר 17 מחלקות מוכנות המחלקה Array פעולות שפועלות על עצם יחיד כותבים במחלקה שמגדירה עצם. פעולות שמצריכות מעבר על כל העצמים כותבים במחלקה עם הפעולה הראשית כיוון שרק בה מוכר המערך שמאפשר התייחסות לכל העצמים. משימה 18 במסגרת המאמץ להגבלת הילודה בסין החליטו השלטונות לבדוק האם יש קשר בין המין של הילד הבכור לבין שמירת החוק המגביל כל משפחה לילד אחד בלבד .כתבו תכנית שתקלוט עבור כל אחד מ50 - המשפחות שגרות בכפר הנידח "שישו" את מספר הילדים במשפחה )מספר שלם( ואת מין הילד הבכור )b או .(gלאחר קליטת הנתונים התכנית תחשב ותודיע: א .ממוצע הילדים במשפחה. ב .לכמה מהמשפחות שילדם הבכור הוא בן יש יותר ילדים מהממוצע. ג .לכמה מהמשפחות שילדם הבכור הוא בת יש יותר ילדים מהממוצע. יש להשתמש במערך של עצמים לשם פתרון המשימה יש להגדיר 2מחלקות. מחלקה ראשונה :מחלקה Familyשתשמור אינפורמציה עבור משפחה אחת .האינפורמציה שיש לשמור היא מספר הילדים במשפחה )מטיפוס ____________( ומין הילד הבכור )מטיפוס ___________(. במחלקה Familyיהיו 3פעולות: .1פעולה בונה .2פעולה שתחזיר את מספר הילדים במשפחה. .3פעולה שתחזיר את מין הילד הבכור. מחלקה שניה :מחלקה עם פעולה ראשית שיהיה בה מערך מאורך __________ שבכל איבר בו תהיה הפניה לעצם מטיפוס ___________. • פתחו פרויקט חדש ,הגדירו בו את שתי המחלקות. • שימרו הריצו ובדקו כי התקבל הפלט הרצוי. עמוד מספר 18 © כל הזכויות שמורות ,ד"ר תמר פז מחלקות מוכנות המחלקה Array משימה 19 כתבו תכנית שתקלוט עבור כל אחד מ 100 -התלמידים בשכבת י"א את שמו ,את ציון המגן שלו במתמטיקה ואת ציון הבגרות שלו במתמטיקה. התכנית תחשב את ממוצע הערכים המוחלטים של ההפרש בין ציון המגן לבין ציון הבגרות .לאחר מכן, התכנית תפלוט: א .את השמות של התלמידים שההפרש המוחלט בין ציון המגן שלהם לבין ציון הבגרות שלהם גבוה מהממוצע המחושב. ב .את השם של התלמיד שההפרש המוחלט בין ציון המגן שלו לבין ציון הבגרות שלו הוא הקטן ביותר )אם מספר תלמידים השיגו את ההפרש המוחלט הקטן ביותר ,התכנית תפלוט את השמות של כל אותם תלמידים(. למשל ,עבור הקלט: שם התלמיד :מעין ,ציון מגן , 94 :ציון בגרות95 : שם התלמיד :אמין ,ציון מגן , 98 :ציון בגרות92 : שם התלמיד :רומן ,ציון מגן , 88 :ציון בגרות98 : שם התלמיד :רעות ,ציון מגן , 90 :ציון בגרות90 : שם התלמיד :אורטל ,ציון מגן , 94 :ציון בגרות91 : התכנית תפלוט: התלמידים שההפרש המוחלט בין ציון המגן לבין ציון הבגרות שלהם גבוה מהממוצע :אמין ,רומן התלמידים שההפרש המוחלט בין ציון המגן לבין ציון הבגרות הוא הנמוך ביותר :רעות הסבר|94-95|=1 , |98-92|=6 , |88-98|=10 , |90-90|=0 , |94-91|=3 (1+6+10+0+3)/5=4 : רמז :הגדירו תחילה מחלקה Studentשתשמור אינפורמציה עבור תלמיד אחד .האינפורמציה שיש לשמור היא ______________של התלמיד וההפרש המוחלט בין ציון המגן שלו לבין ציון הבגרות. במחלקה Studentיהיו 4פעולות: .1פעולה בונה .2פעולה פנימית שתקלוט את ציון המגן ואת ציון הבגרות ותחזיר את ההפרש המוחלט ביניהם. .3פעולה שתחזיר את שם התלמיד. .4פעולה שתחזיר את ההפרש המוחלט של התלמיד. © כל הזכויות שמורות ,ד"ר תמר פז עמוד מספר 19 המחלקה Array מחלקות מוכנות משימה ) 20עיבוד של שאלה מספר ,10בחינת בגרות מדעי המחשב ,קיץ תשס"ג( לקראת תחרות ארצית במדעי המחשב ,נערכו בחינות מיון ל 1750תלמידים .לתחרות הארצית התקבלו תלמידים שציונם בבחינת המיון גבוה מהציון הממוצע של כל הנבחנים בבחינה זו. כתבו תכנית שתקלוט עבור כל מועמד שלושה נתונים :שמו ,ציונו בבחינת המיון ,ושפת התכנות המועדפת עליו ) javaאו .(c# התכנית תפלוט: א .את השמות של התלמידים שהתקבלו לתחרות. ב .את מספר התלמידים שהתקבלו לתחרות ושפת התכנות המועדפת עליהם היא . java ג .את השם של התלמיד שהשיג את הציון הגבוה ביותר )אם מספר תלמידים השיגו את הציון הגבוה ביותר ,התכנית תפלוט את השמות של כל אותם תלמידים(. משימה 21 במפעל להכנת חומוס הוחלט לבדוק האם כדאי לשווק חומוס עם בצל .לשם כך ערך המפעל משאל בין לקוחותיו .כל לקוח נשאל כמה ק"ג חומוס הוא צרך בשנה האחרונה והאם היה רוצה לטעום חומוס עם בצל .כתבו תכנית שתקלוט עבור כל אחד מלקוחות המפעל את שמו ,את מספר ק"ג חומוס שצרך בשנה האחרונה )מספר שלם( והאם ברצונו לטעום חומוס עם בצל ) .(true \ falseקליטת הנתונים תיפסק עם קליטת השם " ."zozoאין לקלוט נתונים נוספים עבור שם זה. לאחר קליטת הנתונים התכנית תחשב ותודיע: א .את השמות של הלקוחות שמעוניינים בחומוס עם בצל. ב .כמה לקוחות צרכו יותר מ 10ק"ג ומעוניינים בחומוס עם בצל. למשל עבור הנתונים הבאים: שחר צרך 12ק"ג לא מעוניין לטעום חומוס עם בצל. עיסאם צרך 4ק"ג כן מעוניין לטעום חומוס עם בצל. שירן צרכה 9ק"ג כן מעוניינת לטעום חומוס עם בצל. מרים צרכה 16ק"ג לא מעוניינת לטעום חומוס עם בצל. התכנית תפלוט :לקוחות שמעוניינים בחומוס עם בצל :עיסאם ,שירן 0לקוחות צרכו יותר מ 10ק"ג ומעוניינים בחומוס עם בצל. הנחה :למפעל יש לכל היותר 100לקוחות. רמז :במקרה הנוכחי ,צריך לקלוט את השם של הלקוח בפעולה הראשית ולא בפעולה הבונה. עמוד מספר 20 © כל הזכויות שמורות ,ד"ר תמר פז המחלקה Array מחלקות מוכנות משימה 22 כתבו תכנית שתקלוט עבור כל אחת מהקבוצות הרשומות באיגוד הכדורסל את שמה ,את מספר הניצחונות שצברה בעונה האחרונה ואת מספר ההפסדים שספגה בעונה האחרונה .קליטת הנתונים תיפסק עם קליטת השם " ."aaaאין לקלוט נתונים נוספים עבור שם זה .התכנית תפלוט: א .את השם של הקבוצה שהיחס בין מספר הניצחונות שלה לבין סה"כ המשחקים ששיחקה הוא הגדול ביותר )אם למספר קבוצות יש את היחס הגדול ביותר ,התכנית תפלוט את השמות של כולן(. ב .את השמות של הקבוצות שהיחס בין מספר הניצחונות שלהן לבין סה"כ המשחקים ששיחקו הוא מתחת לממוצע. למשל עבור הנתונים הבאים: מכבי תל אביב 10 ,ניצחונות 8 ,הפסדים הפועל תל אביב 10 ,ניצחונות 0 ,הפסדים הפועל חיפה 8 ,ניצחונות 5 ,הפסדים ביתר ירושלים 12 ,ניצחונות 5 ,הפסדים בני סכנין 9 ,ניצחונות 0 ,הפסדים התכנית תפלוט: יחס גדול ביותר :הפועל תל אביב ,בני סכנין יחס מתחת לממוצע :מכבי תל אביב ,הפועל חיפה ,ביתר ירושלים הסבר :למכבי תל אביב יש יחס , 0.555להפועל חיפה יחס של ,0.615לביתר ירושלים יחס של 0.705ולהפועל תל אביב ולבני סכנין יחס של .1 יחס ממוצע: (0.555+0.615+0.705+1+1)/5 =0.775 הנחה :באיגוד רשומות לכל היותר 30קבוצות. משימה 23 במשרד הקליטה שומרים עבור כל משפחה שהגיעה לארץ את שם המשפחה ואת מספר הנפשות במשפחה. כתבו תכנית שתקלוט קוד. קוד 1משמעו שהגיעה משפחה חדשה .התכנית תקלוט שם משפחה ומספר נפשות ,תבנה עצם חדש עבור המשפחה החדשה ותוסיף אותו למאגר הכללי. קוד 2משמעו שהגיעו עוד נפשות למשפחה שקיימת כבר במאגר .התכנית תקלוט שם משפחה ומספר נפשות ותוסיף את מספר הנפשות שנקלטו למספר הנפשות הקיים במשפחה זו. קליטת הנתונים תפסק עם קליטת קוד ) 0אין לקלוט נתונים נוספים עבור קוד זה(. לסיום ,התכנית תפלוט את מספר הנפשות הגדול ביותר למשפחה ואת שם המשפחה בעלת מספר נפשות זה )במידה ויש שתי משפחות או יותר בעלות מספר נפשות גדול ביותר ,התכנית תפלוט את כל השמות הרלבנטיים(. הנחות: .1הקלט תקין. .2לא הגיעו שתי משפחות או יותר בעלות אותו שם משפחה. .3הגיעו לארץ לכל היותר 150משפחות. בעמוד הבא מופיעה דוגמא להרצה של התכנית. © כל הזכויות שמורות ,ד"ר תמר פז עמוד מספר 21 Array המחלקה מחלקות מוכנות :דוגמה להרצה של התכנית enter: 1- add new family 2- add more people to existing family 0- finish 1 enter family name shir enter num people 3 enter: 1- add new family 2- add more people to existing family 0- finish 1 enter family name gal enter num people 6 enter: 1- add new family 2- add more people to existing family 0- finish 2 enter family name gal enter num people to add 3 enter: 1- add new family 2- add more people to existing family 0- finish 1 enter family name rozen enter num people 9 enter: 1- add new family 2- add more people to existing family 0- finish 2 enter family name shir enter num people to add 2 enter: 1- add new family 2- add more people to existing family 0- finish 0 Max people in family = 9 The families are: gal , ד"ר תמר פז,© כל הזכויות שמורות rozen 22 עמוד מספר מחלקות מוכנות המחלקה Array משימה 24 בספריה העירונית שומרים עבור כל ספר את האינפורמציה הבאה: שם הספר ,שם המחבר ומספר עותקים. כתבו תכנית שתקלוט אינפורמציה עבור הספרים בספריה .קליטת הנתונים תפסק עם קליטת שם ספר ‘) ’kukuאין לקלוט נתונים נוספים עבור שם זה(. לאחר מכן התכנית תודיע: א .שם המחבר שיש בספריה מספר רב ביותר של ספרים שונים שכתב )במידה ויש שני מחברים או יותר שכתבו מספר רב ביותר של ספרים ,התכנית תפלוט את כל השמות הרלבנטיים(. ב .המספר הכללי של ספרים בספריה )סך כל העותקים(. הנחה :יש בספריה לכל היותר 300ספרים שונים. © כל הזכויות שמורות ,ד"ר תמר פז עמוד מספר 23