לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 30-11-2007, 17:46
  2Sky 2Sky אינו מחובר  
 
חבר מתאריך: 22.11.07
הודעות: 412
שאלת מערכים דו מימדיים בjava

נגדיר: אלכסון ראשי של מערך דו-ממדי b ריבועי בגודל nXn מכיל את האיברים b[0,0],b[1,1],...,b[n-1,n-1]).


הוסיפו למחלקה Matrix שיטה בשם square. השיטה תבדוק האם קיים מערך דו-ממדי ריבועי חלקי בפינה הימנית התחתונה של המערך המאוחסן במחלקה Matrix אשר מכיל 1 -ים באלכסונו הראשי והיתר אפסים.
אם קיים - השיטה תחזיר את מספר השורות/עמודות של מערך ריבועי חלקי זה; אם לא קיים - השיטה תחזיר 0.
חתימת השיטה תהיה: public int square()


[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://img514.imageshack.us/img514/6949/20413179cr3.jpg]


זו התוכנית הראשית
קוד:
public class Test2 { public static void main(String[] args) { Matrix A = new Matrix(4,4); for(int i=0; i< A.getNumberOfRows(); i++) A.setElement(i,i,1); A.setElement(0,0,1); System.out.println(A.toString() + "Squere = " + A.square()); } }


וזה מה שניסיתי
הלכתי על לבדוק 1 על האלכסון ולבדוק אפסים על המשולשים
קוד:
public int square() { int _diagon = chkDiagonal(); boolean _downTriangle = chkDownTriangle(); boolean _upTriangle = chkUpTriangle(); if ((_diagon != 0) && (_downTriangle == true) && (_upTriangle == true)) return _diagon; else return 0; } private int chkDiagonal() { int n = getNumberOfRows(); int counter = 0; for (int i=n-1; i >= 0; n--) if (_data[i][i] == 1) { counter++; } return counter; } private boolean chkDownTriangle() { int n = getNumberOfRows(); for (int i=n-2; i >= 0; i--) for (int j=n-1; j >= 0; j--) if (_data[n-2][n-1] == 0) { n--; return true; } return false; } private boolean chkUpTriangle() { int n = getNumberOfRows(); for (int i=n-1; i >= 0; i--) for (int j=n-2; j >= 0; j--) if (_data[n-1][n-2] == 0) { n--; return true; } return false; }

תוכלו אולי לומר לי מה הבעיה?
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 30-11-2007, 19:43
  YoavG YoavG אינו מחובר  
 
חבר מתאריך: 29.08.06
הודעות: 201
טעויות.
בתגובה להודעה מספר 1 שנכתבה על ידי 2Sky שמתחילה ב "שאלת מערכים דו מימדיים בjava"

1. בפונקציה chkDiagonal אתה מקטין את n בלולאת ה-for במקום את i .

2. שוב ב-chkDiagonal , אתה לא עוצר כאשר אתה נתקל באיבר על האלכסון הראשי ששונה מ-1 ולכן במקרה בו כל האלכסון הראשי מלא ב-1-ים למעט תא אחד אתה תחזיר מהפונקציה n-1 ללא קשר למיקום האיבר על האלכסון ששונה מ-1 או לחילופין אתה תחזיר מספר שונה מאפס עבור מטרציה שקיים לה "1" על האלכסון הראשי ללא קשר למיקומו.

3. בפונקציות chkXXXTriangle אתה בודק האם המשולש העליון/תחתון תחת האלכסון הראשי מלאים באפסים ללא קשר לתוצאת chkDiagonal , כלומר אינך בודק כלל מה שאתה צריך לבדוק.

4. בפונקציות chkXXTriangle אתה תחזיר True אם קיים איבר כלשהוא שהוא "0" ללא קשר לשאר האיברים. הביטוי "return true;" אינו נמצא במקום הנכון כלל וכלל. תחשוב מחדש על הלוגיקה של מה שאתה רוצה לעשות שם , או יותר נכון מתי אתה רוצה להחזיר FASLE.

5. בפונקציות chkXXXTriangle אתה עובר על טווחים לא נכונים. שים לב לטווחים בביטוי ה-for ולתלות בין מספר השורה למספר העמודות שאתה צריך לסרוק באותה שורה עבור כל משולש.

לא אגיד לך כיצד לפתור את שיעורי הבית , כן אמליץ לך קודם לחשוב על דרך כללית לפתרון ורק לאחר מכן לתכנת כיוון שכרגע התוכנית אינה עונה כלל על השאלה.

יואב.

נערך לאחרונה ע"י YoavG בתאריך 30-11-2007 בשעה 19:49. סיבה: עוד טעויות..
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 09:11

הדף נוצר ב 0.05 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר