1 / 12

תרגול 6

תרגול 6. 1. 1. תרגיל 1. מערך דו-מימדי ( NXN ) יקרא "מאוזן-אלכסון" אם סכום האיברים באלכסון הראשי שלו (המודגש) שווה למחצית מסכום איברי כל המערך. כתבו את הפונקציה isBalanced המקבלת מערך בגודל NXN ומחזירה האם המערך הינו "מאוזן-אלכסון". לדוגמא: המערך הבא הינו "מאוזן-אלכסון".

gened
Download Presentation

תרגול 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. תרגול 6 1 1

  2. תרגיל 1 מערך דו-מימדי (NXN) יקרא "מאוזן-אלכסון" אם סכום האיברים באלכסון הראשי שלו (המודגש) שווה למחצית מסכום איברי כל המערך. כתבו את הפונקציה isBalanced המקבלת מערך בגודל NXN ומחזירה האם המערך הינו "מאוזן-אלכסון". לדוגמא: המערך הבא הינו "מאוזן-אלכסון" publicstaticbooleanisBalanced (int [][] arr) } { 2

  3. תרגיל 1 - פתרון • publicstaticboolean isBalanced (int [][] arr)} • int all = 0, diagonal = 0; • for (int i = 0; i < arr.length; i++){ • for (int j = 0; j < arr[i].length; j++){ • all += arr[i][j]; • if (i == j) • diagonal += arr[i][j]; • { • { • return 2*diagonal == all; • { 3

  4. תרגיל 2 מערך דו-מימדי יקרא "ממויין שורות" אם כל השורות בו ממויינות בסדר עולה. מערך דו-מימדי ייקרא "ממויין עמודות" אם כל העמודות בו ממויינות בסדר עולה. מערך ייקרא "ממויין" אם המערך "ממויין שורות" וגם "ממויין עמודות". כתבו פונקציה המקבלת מערך דו-מימדי ומחזירה האם המערך "ממויין". לדוגמא: המערך הבא "ממויין": publicstaticbooleanisSorted (int [][] arr) } {

  5. תרגיל 2 - פתרון • publicstaticbooleanisSorted (int [][] arr){ • returnisColumnSorted(arr) && isRowSorted(arr); • { • publicstaticbooleanisRowSorted(int[][] arr) { • for (int i = 0; i < arr.length; i++) • for (int j = 1 ; j < arr[0].length; j++) • if (arr[i][j - 1] > arr[i][j]) • returnfalse; • returntrue; • { • publicstaticbooleanisColumnSorted(int[][] arr) { • for (int i = 1; i < arr.length; i++) • for (int j = 0 ; j < arr[0].length; j++) • if (arr[i-1][j] > arr[i][j]) • returnfalse; • returntrue; • { 5

  6. תרגיל 3 נגדיר "פרח" במערך דו מימדי כך: 3X3- האיברים מתוך תת מערך בגודל - האיבר המרכזי במערך הוא "לב הפרח". - ארבעת האיברים הצמודים לו בפינותיו הם "עלי הפרח". - הערך של "לב הפרח" שווה לסכום ערכי "עלי הפרח". א. כתוב תוכנית הקולטת למערך בגודל 18X15מספרים שלמים ב. מערך נקרא "פרחוני", אם יש בו לפחות 5 "פרחים". כתבו תוכנית שתחזיר אמת במידה ומערך הוא "פרחוני" ושקר אחרת • publicstaticvoid main( String [] args) • } • int arr[][] = newint[15][18];//input array • inputArr(arr); • if (isFlowery(arr)) • System.out.println("The array is flowery"); • else • System.out.println("The array isn't flowery"); • {

  7. תרגיל 3 – פתרון חלק א' • publicstaticvoid inputArr(int[][] arr) { • Scanner sc = new Scanner(System.in); • int i,j;//loop counters • System.out.println("Please enter 15 rows and 18 columns"); • for(i=0;i<arr.length;i++){ • for(j=0;j<arr[i].length;j++){ • arr[i][j] = sc.nextInt(); • { • { • {

  8. תרגיל 3 – פתרון חלק ב' • privatestaticboolean isFlowery(int[][] arr) { • int count=0;//number of flowers • for(int i=0;i<arr.length;i++) • for(int j=0;j<arr[i].length;j++) • if (isFlower(arr,i,j)) • count++; • return count >= 5; • { • publicstaticboolean isFlower(int[][] arr, int i, int j) { • int sum;//sum of flower's elements • if(i==0 || i == arr.length-1 || j==0 || j == arr[0].length-1) • returnfalse; • sum=arr[i-1][j-1]+arr[i-1][j+1]+arr[i+1][j-1]+arr[i+1][j+1]; • if(arr[i][j]==sum) • returntrue; • else • returnfalse; • {

  9. תרגיל 4 תרגיל: כתבו פונקציה המקבלת מערך של שמות סטודנטים בקורס ומערך של ציונים ומחזירה מערך המכיל את כל שמות הסטודנטים בעלי ציון גדול מהממוצע ממויינים לפי הציונים. לדוגמא: • publicstaticvoid main (String[] args) • } • String [] students = { "A", "B", "C", "D", "E", "F", "G" }; • int [] grades = { 100, 80, 90, 100, 40, 90, 70 }; • String[] excellent = getExcellentStudents(students, grades); • for (inti = 0; i < excellent.length; i++) • System.out.print(excellent[i] + " "); • { יודפס (הממוצע הוא 81.42): C F D A

  10. תרגיל 4 - פתרון • publicstatic String[] getExcellentStudents(String[]students, int[]grades){ • double avg = calcAverage(grades); • int excellentCount = aboveAverage(grades, avg); • String [] excellentStudent = new String[excellentCount]; • int [] excellentGrades = newint [excellentCount]; • for (int i = 0, j = 0; i < grades.length; i++){ • if (grades[i] >= avg){ • excellentGrades[j] = grades[i]; • excellentStudent[j] = students[i]; • j++; • { • { • selectionSort(excellentGrades , excellentStudent); • return excellentStudent; • {

  11. תרגיל 4 - פתרון • publicstaticint aboveAverage(int[] grades, double avg) { • int count = 0; • for (int i = 0; i < grades.length; i++) • } • if (grades[i] > avg) • count++; • { • return count; • { • publicstaticdouble calcAverage(int[] grades) { • double avg = 0; • for (int i = 0; i < grades.length; i++) • avg += grades[i]; • return avg / grades.length; • {

  12. תרגיל 4 - פתרון • publicstaticvoid selectionSort (int [] arr, String[] strs){ • for(int i=0; i<arr.length; i++){ • int min_pos=i; • for(int j=i+1; j<arr.length; j++){ • if ( arr[j] < arr[min_pos] ) • min_pos=j; • { • String tmp = strs[i]; // help variable • strs[i] = strs[min_pos]; • strs[min_pos] = tmp; • int temp = arr[i]; // help variable • arr[i]=arr[min_pos]; • arr[min_pos]=temp; • { • {

More Related