עבור לתוכן

מערך דו מימדי ג'אווה

Featured Replies

פורסם

דוגמא עבור N זוגי: דוגמה עבור N אי זוגי:

0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0

0 0

עבור כל מערך דו מימדי ריבועי n*n

כתוב מתודה שבודקת האם המערך הנ"ל יש לו יהלום עם אפסים בלבד , ללא התחשבות בשאר ערכי המערך .

אם אפשר כיוון \אלגוריתם \ עצה לפתירה , תודה .

פורסם

תנסה למצוא את האיפיון המתמטי של התאים שבהם יש 0, לפי האינדקסים.

לי יקח קצת זמן לחשוב על זה. אני אנסה לפתור את זה

פורסם

לא הבנתי למה התכוונת... אתה צריך מתודה שמציירת את היהלום לתוך מערך ריבועי בגודל n*n?

בניתי תוכנה כזאת ב-JS, אז אני אצרף את הקוד שלה לפה:


{
var i=1, j=1, y=1, x=הגודל, z=התו המבוקש;

for(y=1; y<(2*(x+1)) ;y=y+2)
{
if(y<=x)
{
for(i=1; i<=(x-y)/2; i++)
{
document.write("<font color=white face=arial>"+z+"</font>");
}

for(j=1; j<=y; j++)
{
document.write("<font face=arial>"+z+"</font>");
}

}

else if (y>x)
{
if(y!=2*x+1)
{
for(i=1; i<=(y-x)/2; i++)
{
document.write("<font color=white face=arial>"+z+"</font>");
}

for(j=1; j<=((2*x-y)); j++)
{
document.write("<font face=arial>"+z+"</font>");
}
}
}

document.write("<br>");
}
}
function draw()

איפה שיש את הפקודה "Color=White" אמור להיות רווח (משום מה ב-JS אין אפשרות לכתוב רווחים, לפחות לפי מה שאני יודע). אם אתה רוצה יהלום ריק תחליף את השורות האלה:


{
document.write("<font face=arial>"+z+"</font>");
}
for(j=1; j<=y; j++)

באלה:



for(j=2; j<y; j++)
{
document.write("<font color=white face=arial>"+z+"</font>");
}

document.write("<font face=arial>"+z+"</font>");
document.write("<font face=arial>"+z+"</font>");

ואת השורות האלה:


{
document.write("<font face=arial>"+z+"</font>");
}
for(j=1; j<=((2*x-y)); j++)

באלה:



for(j=2; j<((2*x-y)); j++)
{
document.write("<font color=white face=arial>"+z+"</font>");
}

document.write("<font face=arial>"+z+"</font>");
document.write("<font face=arial>"+z+"</font>");

פורסם
  • מחבר

קצת לא הבנתי את הקוד שלך ,

השאלה היא כזאת עבור כל מערך דו מימדי כלשהו n*n

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

פורסם

במערך יש כבר מספרים (נניח 1 לנקודה שתסומן בצבע, ו-0 לנקודה ריקה), ואתה צריך לבדוק אם הם מסודרים בצורה של יהלום?

פורסם

הכי פשוט לדעתי יהיה להתייחס לכל רבע של המערך בנפרד ולבדוק אותו.

למשל, עבור הרבע השמאלי העליון אתה מתחיל בתא בטור הראשון (טור 0) ובשורה n/2-1 ובכל איטרציה מגדיל את הטור ב 1 ומקטין את השורה באחד עד שהגעת לשורה הראשונה. אם כל התאים האלה היו 0 אתה ממשיך לרבע הבא. למשל עבור הרבע הימני העליון, אתה מתחיל בתא בשורה הראשונה בטור n/2 ובכל איטרציה אתה מגדיל את הטור באחד ואת השורה באחד עד שהגעת לאמצע. ככה אתה בודק כל רבע בנפרד ומחזיר את התוצאה בהתאם.

כדי שהמתודה תתאים גם ל n זוגי וגם וגם לאי זוגי, אתה יכול לעגל את n/2 למעלה או למטה (בעזרת ceil ו floor) בהתאם לצורך.

לדוגמה, עבור n=6 התוצאה של n/2-1 היא 2 (ואז אתה בודק את המקומות 0,1,2). עבור n=7 אם תעגל את 7/2 למעלה תקבל 4 ותחסר אחד תקבל 3 (ואז אתה בודק את המקומות 0,1,2,3). עבור n/2, עבור n=6 תקבל 3 (ואז אתה בודק את המקומות 3,4,5). עבור n=7, אם תעגל את n/2 למטה תקבל 3 (ואז אתה בודק את המקומות 3,4,5,6).

פורסם
  • מחבר

במערך יש כבר מספרים (נניח 1 לנקודה שתסומן בצבע, ו-0 לנקודה ריקה), ואתה צריך לבדוק אם הם מסודרים בצורה של יהלום?

כן , המערך כבר מלא במספרים או null

וצריך לבדוק רק את האפסים , כלומר צריך לראות האם יש יהלום של אפסים כפי הציור למעלה .

הכי פשוט לדעתי יהיה להתייחס לכל רבע של המערך בנפרד ולבדוק אותו.

רעיון מצוין ופשוט :xyxthumbs: אני אבדוק , אם אני אתקשה אני אודיע לכם . :xyxthumbs:

פורסם

אני לא יודע JAVA, אבל אני חושב שתוכל להבין את הקוד הבא (שהוא מן הסתם לא כתוב ב-JAVA):


{
int i=1, j=1, y=1, x={size};
int a=1;

for(y=1; y<(2*(x+1)) ;y=y+2)
{
if(y<=x)
{
for(i=1; i<=(x-y)/2; i++)
{
if (array[(y-1)][i-1]!=null)
{
a=0;
}
}

if (array[(y-1)/2][i-1]!="0")
{
a=0;
}

for(j=i+1; j<y; j++)
{
if (array[(y-1)/2][j-1]!=null)
{
a=0;
}
}

if (array[(y-1)/2][j-1]!="0")
{
a=0;
}

}

else if (y>x)
{
if(y!=2*x+1)
{
for(i=1; i<=(y-x)/2; i++)
{
if (array[(y-1)/2][i-1]!=null)
{
a=0;
}
}

if (array[(y-1)/2][i-1]!="0")
{
a=0;
}

for(j=i+1; j<=((2*x-y)); j++)
{
if (array[(y-1)/2][j-1]!=null)
{
a=0;
}
}

if (array[(y-1)/2][j-1]!="0")
{
a=0;
}

}
}
}

if (a==1)
{
//הצורה היא יהלום
}
else
{
//הצורה היא לא יהלום
}
}
function check()

סוגריים מרובעים ("[ ]") מסמנים שזה מערך (הראשונים לאינדקס הראשון והשניים ואינדקס השני).

אל תהססו להעיר אם אתם מוצאים טעות.

אודי, אם אתה לא מבין משהו - תשאל.

פורסם
  • מחבר

תודה בן וקובי התרגיל נפתר :xyxthumbs:

חילקתי את המעויין ל 4 כעצת קובי ומשם הדרך היתה קצרה .

תודה :cool2:

פורסם

רגע, קובי, מה אמור לקרות במצב כזה :s05:

0

0 0 0

0 0 0

0 0

0

מה שכתבת בודק רק אם יש את השלד הבסיסי של יהלום - אבל לא אם היהלום "מלוטש", או מושלם.

פורסם

בפוסט הראשון הוא כתב "ללא התחשבות בשאר ערכי המערך" אז שאר המקומות במערך לא רלבנטיים בשבילו, רק היהלום עצמו.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים