30-11-2007, 18:46
|
|
|
חבר מתאריך: 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;
}
תוכלו אולי לומר לי מה הבעיה?
|