300 likes | 672 Views
מערך חד מימדי. חלק א היכרות. דוגמא:תינוקות. בית חולים רוצה לבדוק: באיזה חודש נולדו הכי הרבה תינוקות? נחשב מקסימום מסדרת המספרים באיזה חודש נולדו הכי מעט תינוקות? נחשב מינימום מסדרת המספרים באילו חודשים נולדו מספר תינוקות מעל הממוצע?. איך נחשב באילו חודשים נולדו מספר תינוקות מעל הממוצע?
E N D
מערך חד מימדי חלק א היכרות
דוגמא:תינוקות • בית חולים רוצה לבדוק: • באיזה חודש נולדו הכי הרבה תינוקות? נחשב מקסימום מסדרת המספרים • באיזה חודש נולדו הכי מעט תינוקות? נחשב מינימום מסדרת המספרים • באילו חודשים נולדו מספר תינוקות מעל הממוצע?
איך נחשב באילו חודשים נולדו מספר תינוקות מעל הממוצע? • סריקה ראשונה:נחשב את הממוצע • סריקה שניה:נסמן את החודשים מעל הממוצע • איך ניסרוק את הנתונים פעמיים?? • מסקנה:יש צורך לשמור את הנתונים מהקלט
קלט:מערך (טבלה) ובו מספר התינוקות לכל חודש. • מה גודל המערך? • פלט: • ממוצע תינוקות שנתי • מספר חודשים מעל הממוצע • מספר חודשים מתחת לממוצע
מערך בשם baby כל איבר במערך מכיל מספר הלידות באותו חודש כל איבר מטיפוס שלם פנייה לאיברים במערך: baby[1] מייצג לידות בחודש מס 1 baby[2] מייצג לידות בחודש מס 2 baby[12] מייצג לידות בחודש מס 12
בניית מערך דרך א ;[גודל המערך]טיפוס new = שם [ ] טיפוס int [ ] marks = new int[27]; double [ ] hights = new double[123]; char[ ] signs = new char[19];
בניית מערך דרך ב הצהרה ; שם [ ] טיפוס בנייה ;[גודל המערך]טיפוס new = שם double [ ] hights; hights = new double[34]; char[ ] signs; signs = new char[19];
כללים • פנייה לאיבר במערך :[מציין]שם המערך • במערך בעל n איברים, מציין התא הראשון 0, מציין התא האחרון n-1 • כל איבר הוא משתנה לכל דבר • אסור לחרוג מגבולות המערך !!!!
גודל המערך • גודל מערך תמיד שלם חיובי • פנייה לגודל מערך: length.<שם מערך> • דוגמא: maarach.length • גודל מערך יכול להתקבל כקלט Int [] grades = new int [in.nextInt()] for (int I =0; i<grades.length; i++) System.out.print(“ “+grades[i]);
אתחול איברי מערך Int [] arr = {1,2,3,4,5}; אתחול בשלב ההגדרה Int [] arr = new int[20]; אתחול בפעולת קלט for (int I =0; i<20; i++) arr[i] = in.nextInt(); Int [] arr = new int[20]; השמה אתחול בפעולת for (int I =0; i<20; i++) arr[i] = 2*I;
דוגמא פתורה 3 עמ 12 • קלט :הישגי 20 תלמידי ספורט בקפיצה לגובה • פלט: • ממוצע ההישגים • מספרים סידוריים של התלמידים מעל הממוצע • מספר התלמידים מעל הממוצע
הגדרת המערך double[] heights = new double[20];// double sum=0.0, avg; // הצהרות ואיתחול משתנים int aboveAvg=0; System.out.println ("Enter jumps"); for (int i=0 ; i<heights.length ; i++) ( // לולאה לקריאת נתוני הקפיצות וסיכומם heights[i] = in.nextDouble(); sum = sum+heights[i]; // סכום הקפיצות }// for avg=sum/20; // חישוב ממוצע הקפיצות System.out.println ("The average of jumps is:" +avg); for (int i=0 ; i<heights.length ; i++) { // לולאה למציאת התלמידים מעל הממוצע if (heights[i]>avg) { aboveAvg++; System.out.println("Student number "+(i+1)+" obove average"); }// if }// for System.out.println(aboveAvg + "students above average");
עמ 19 תר 19 • מערך actionמכיל שלשות של מספרים • בכל שלשה: • המספר הראשון מבטא פעולה (1:חיבור, 2:חיסור) • הפעולה מתבצעת על המספרים השני והשלישי • מערך result שומר את התוצאות
אלגוריתם • קרא קלט לתוך מערך action • עבור כל שלשה במערך action בצע: • אם המספר הראשון 1: חבר את השני והשלישי והכנס למערך result • אחרת: חסר את השני והשלישי והכנס למערך result
int N=18; int[] action = new int[N]; int[] result = new int[N/3]; int i, k=0; for(i=0 ; i<N; i++) // action קרא קלט לתוך מערך action[i] = in.nextInt(); for(i=0 ; i<N; i+=3) // action עבור כל השלשות ב { if (action[i] == 1) // פעולת חיבור result[k] = action[i+1]+action[i+2]; else // פעולת חיסור result[k] = action[i+1]-action[i+2]; k++;; }
דוגמא פתורה 4 עמ 14 • דוגמא פתורה 4 עמ :14לקרוא בבית • תרגיל כיתה עמ 15-17 תר 1-8 • ש"ב: 9-11 עמ 17, 13-20 עמ 18-19