260 likes | 528 Views
תרגול 4. היום בתרגול: הגשת עבודות TextDiff מערך חד- מימדי מחרוזות מערך דו מימדי. הורדת textdiff ופתיחתו. בחירת קבצים להשוואה ע"י textdiff. דוגמא למציאת שינויים ע"י textdiff. דוגמא לשני קבצים זהים ב- textdiff. מערך חד-מימדי.
E N D
היום בתרגול: • הגשת עבודות • TextDiff • מערך חד-מימדי • מחרוזות • מערך דו מימדי
מערך חד-מימדי • מערך הינו מבנה זיכרון המכיל מספר ערכים מאותו טיפוס, גודל המערך נקבע כאשר הוא נוצר (בזמן ריצה) ולאחר מכן הוא קבוע. • אילו טיפוסים אנו מכירים?
מערך - מאפיינים • משתנה שאינו פרימיטיבי • מבנה מסודר של ערכים. • לכל ערך יש מקום. • כל איברי המערך הם מאותו סוג. • מערך יכול להכיל כל טיפוס פרימיטיביוכן טיפוסים שאינם פרימיטיביים כפי שנלמד בהמשך
הצורך במערך • יש צורך לשמור מספר גדול של משתנים מאותו סוג. • זהו מבנה מאורגן המאגד בתוכו קבוצה גדולה של ערכים שניתן לעבור עליהם באופן שיטתי.
תרגילים – מערך חד מימדי • תרגיל 1: כתבו תוכנית אשר קולטת 5 מספרים שלמים מהמשתמש לתוך מערך, ומדפיסה את האיבר המינימאלי, המקסימאלי את סכום האיברים של המערך ואת ממוצעם.
תרגילים – מערך חד מימדי • תרגיל 1 - פתרון: • publicstaticvoid main(String[] args) { • Scanner sc = new Scanner(System.in); • int [] arr = newint[5]; • System.out.println("Please enter 5 numbers:"); • for (int i = 0; i < 5; i++) • arr[i] = sc.nextInt(); • int min = arr[0], max = arr[0], sum = 0; • for ( int i = 0; i < 5; i++){ • sum += arr[i]; • if (min > arr[i]) • min = arr[i]; • if (max < arr[i]) • max = arr[i]; • } • System.out.println("Min value is: " + min ); • System.out.println("Max value is: " + max ); • System.out.println("Summary of al numbers is: " + sum ); • System.out.println("Average of all numbers is: " + sum/5.0 ); • }
תרגילים – מערך חד מימדי • תרגיל 2: מציאת מספרים משותפים: נתונות שתי רשימות של מספרי זהות של סטודנטים עבור שתי מחלקות באוניברסיטה. רוצים למצוא אם קיים סטודנט הרשום בשתי המחלקות. כתבו תוכנית המאתחלת שני מערכים עם תוכן הרשימות ואשר כותבת למסך את מס' ת.ז. של כל הסטודנטים הרשומים בשתי המחלקות. ניתן להניח כי בכל מחלקה יש 5 סטודנטים. int arr1[]={12,15,5,88,234}; int arr2[]={234,4,567,5,88};
תרגילים – מערך חד מימדי • תרגיל 2 - פתרון: • publicstaticvoid main(String[] args) { • int arr1[]={12,15,5,88,234}; • int arr2[]={234,4,567,5,88}; • for (int i = 0; i < arr1.length; i++){ • for (int j = 0; j < arr2.length; j++){ • if (arr1[i] == arr2[j]) • System.out.println(arr1[i]); • } • } • }
מחרוזות הקדמה מחרוזת (String) היא מחלקה המייצגת טקסט (רצף של תווים). מיספור אינדקס התווים במחרוזת מתחיל מ 0 ונגמר באורך המחרוזת פחות 1. String "abcd"Index 0123
מחרוזות פונקציות של מחרוזת: length() – מחזיר את אורך המחרוזת. charAt(i) – מחזיר את התו במקום ה-i במחרוזת. substring(i,j) – מחזיר את תת-מחרוזת החל מאינדקס i ועד אינדקס j (לא כולל את j). substring(i) – מחזיר את תת-מחרוזת החל מאינדקס i ועד הסוף. equals(String other) – בודק שוויון בין 2 מחרוזות.
מחרוזות דוגמה עליכם לכתוב תוכנית המגדירה מחרוזת ומדפיסה את המחרוזת ההפוכה שלה. לדוגמא: עבור המחרוזת Hello יודפס על המסך המחרוזת olleH.
פתרון publicstatic void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Please enter string: "); String data = sc.next(); String rev = new String(); for (int j=data.length()-1; j>=0; j=j-1) { rev = rev + data.charAt(j); } System.out.println(rev); }
תרגילים – מערך דו מימדי • תרגיל 1: השלימו את התוכנית הבאה כך שמערך a יועתק למערך c. public class Copy2dArray{ publicstaticvoid main(String[] args){ int[][] a = {{1,3,2},{5,6,7},{4,1,2}}; int[][] c; } //main }
תרגילים – מערך דו מימדי • תרגיל 1 - פתרון: public class Copy2dArray{ publicstaticvoid main(String[] args){ int[][] a = {{1,3,2},{5,6,7},{4,1,2}}; int[][] c; //Create the 2dArray row by row c = newint[3][]; int i,j; for ( i=0 ; i < 3; i = i+1) c[i] = newint[3]; for ( i=0; i < 3; i = i+1) for (j=0 ; j < 3; j = j+1) c[i][j] = a[i][j]; } //main }
תרגילים – מערך דו מימדי • תרגיל 2: השלימו את התוכנית הבאה כך שמערך a יועתק למערך c. public class Copy2dArray{ publicstaticvoid main(String[] args){ int[][] a = {{1,3},{5,6,7},{4}}; int[][] c; } //main }
תרגילים – מערך דו מימדי • תרגיל 2 - פתרון: public class Copy2dArray{ publicstaticvoid main(String[] args){ int[][] a = {{1,3},{5,6,7},{4}}; int[][] c; //Create the 2dArray row by row c = newint[a.length][]; int i,j; for ( i=0 ; i < c.length; i = i+1) c[i] = newint[a[i].length]; for ( i=0; i < c.length; i = i+1) for (j=0 ; j < c[i].length ; j = j+1) c[i][j] = a[i][j]; } //main }
תרגילים – מערך דו מימדי • תרגיל 3: כתבו תוכנית אשר תגדיר מערך מגודל 13*13 אשר ייצג את לוח הכפל ולאחר מכן תדפיס אותו למסך
תרגילים – מערך דו מימדי public class MultiplicationTable { publicstaticvoid main(String[] arg) { finalint ROW = 13; finalint COLUMN = 13; int[][] mat = newint[ROW][COLUMN]; for (int i=0; i < ROW; i=i+1) for (int j=0; j < COLUMN; j=j+1) mat[i][j] = i*j; //prints the matrix for (int i=0; i < ROW; i=i+1) { for (int j=0; j < COLUMN; j=j+1) System.out.print(mat[i][j]+"\t"); System.out.println(); } } //main } //class • תרגיל 3 - פתרון:
תרגילים – מערך דו מימדי • תרגיל 4: כתבו תוכנית המגדירה 2 מטריצות a,b בגודל 4X4, ומגדירה מטריצה c אשר תהיה חיבור המטריצות. תזכורת: חיבור מטריצות הינו החיבור של איברים מתאימים במטריצות (כלומר האיבר במקום ה-i,j במטריצה א' עם האיבר במקום ה-i,j במטריצה ב'). לדוגמא:
תרגילים – מערך דו מימדי • תרגיל 4 - פתרון: // Adds two matrices public class Add{ publicstaticvoid main(String[] args){ int[][] a ={{1,4,-2,3},{-1,2,5,3},{9,10,-94,12},{0,1,-5,3}}; int[][] b ={{2,-4,5, 3},{7,9,-7,6},{12,-5,3,6},{-4,2,1,12}}; int[][] c; c = newint[a.length][a[0].length]; for (int i = 0 ;i<a.length;i=i+1) for (int j =0;j< a[i].length;j= j+1) c[i][j] = a[i][j] + b[i][j]; } //main } //class Add