אני צריך בבקשה עזרה במימוש שיטה בשם allThere במחלקה שיצרתי בשם Square3X3 המייצגת מערך דו מימדי של 3x3 מספרים (סה"כ 9 מספרים). השיטה צריכה למצוא האם במערך הדו מימדי יש את כל המספרים מ-1 עד 9 (כולל כולם, וכל אחד רק פעם אחת). בנתיים החתימה של השיטה וההתחלה שלה נראית כך: ;()public boolean allThere (++for(int row=0;row<=2;row } (++for(int col=0;col<=2;col } אודה לעזרה מראש. נ.ב:להבא, איך אתם מעלים טקסט לאתר שהוא עם רקע אפור כזה..?
במידה והמספרים בין 1 ל-9 ,הוא יחזיר true, אחרת, יחזיר false. ניסיתי לעשות תנאי if על המספרים בין ל-9 ,אבל אם אפילו מכנסים פעמיים את הספרה 5 למשל, הוא עדיין מוציא true.
תעשה העברה של המטריצה לתוך מערך בגודל 9. תמיין את המערך ותבדוק האם במקום ה i יש את האיבר ה i+1.. העברת מטריצה לתוך מערך זה משהו כזה..
int k = 0; int arr= new int; for(int i = 0 ; i < 3 ; i++) { for(int j = 0 ; j < 3 ; j++) { arr= matrix; k++; } }
לאחר מכן תרצה למיין אותם..שוב הכל תלוי כאן באם אתה צריך משהו ביעילות מסויימת..אם כן עדיף למיין ע"י quicksort או mergesort.. אחרת מימוש של bubblesort יהיה הכי פשוט.. לאחר המימוש פשוט תשאר עם מערך ממוין ותצטרך לבדוק האם במקום ה i יש את האיבר ה i+1..כלומר במקום האפס יש את 1 ובמקום ה 1 יש את 2...עד שאתה מגיע למקום האחרון(8) ושואל האם יש בו את 9..אם הוא רץ עד הסוף אז תחזיר אמת..אם הוא נופל באמצע תחזיר שקר..
תאתחל את כל התאים ל-0. כל פעם שתיתקל במספר תסמן אותו במערך שלך, למשל אם ראית 3 אז תהפוך את התא ה-2 במערך (כי התאים מ-0 עד 8) ל-1. בסוף תבדוק שהמערך כולו הוא של אחדים.
int[] ar = new int[9]; for (int i=0;i<3;++i) for (int j=0;j<3;++j) ar[mat[i][j]-1] = 1; // אם כל התאים הם 1 אז תחזיר אמת