עבור לתוכן

JAVA|שאלת עצמים *דחוף

Featured Replies

פורסם

אני יודע שזה הרבה אבל אני מבקש את העזרה שלכם..!

עצם שהוא טיפוס נתונים (לא מצויין מה הוא ולפי השאלה ניתן להבין כנראה שזה מערך) נקראת BOX ובתוכה זוגות של מספרים חיוביים שלמים (כל זוג הוא עצם בפני עצמו שנקרא PAIR).

אם מוכנס צמד שערך הX שלו (הערך הראשון מבין השניים) כבר קיים בטיפוס נתונים אז הוא מחליף את אותו צמד שכבר קיים בטיפוס נתונים... נגיד רוצים להכניס את הזוג 5,1 ויש בטיפוס נתונים 5,2 אז ה5,1 יחליף את ה5,2!

במידה וערך הX לא קיים אז הזוג מוכנס למספר הגבוה ביותר שעדיין יותר קטן ממנו ז"א אם רוצים להכניס את 34,5 לטיפוס הנתונים הנ"ל- 52,34 35,2 11,2 1,1 אז הוא יראה אחרי ההוספה ככה - 52,34 35,2 34,5 11,2 1,1!

הוצאת זוג התבצעת באמצעות פעולה בא נותנים מיקום בטיפוס הנתונים (מיקום הזוג הרצוי) וכך מקבלים בחזרה טיפוס בסוג זוג(PAIR), במידה והמיקום שהוכנס לא קיים הפעולה תחזיר 0,0.

הפעולות:

טיפוס BOX:

BOX() - פעולה בונה

Boolean isEmpty() - הפעולה בודקת אם הקופסא ריקה או לא

void set(PAIR pair) - הפעולה מכניסה זוג לתוך טיפוס הקופסא הקיים

PAIR remove(int place) - הפעולה מוציאה צמד לפי המקום הדרוש ומחזירה אותו למי שקרא לפעולה

טיפוס PAIR:

PAIR(int x, int y) - פעולה בונה

int getX() - הפעולה מחזירה את ערך הX (הראשון)

int getY() - הפעולה מחזירה את ערך הY (השני)

1.

נתון 2 קופסאות אחת מלאה (BOX1) והשניה ריקה (BOX2).

יש להחליף את כל ערכי הזוגות של BOX1 בינם לבין עצמם (ז"א ערך הX של כל זוג עם ערך הY של אותו הזוג- המיקום שלהם בזוג), וזאת באמצעות BOX2. *השינוי המתוקן צריך להיות בBOX1 ולא בBOX2!

2.

רשום קטע קוד שמדפיס את ערכי הזוג בעלי מכפלת ערכיו המקסימלית מבין הזוגות שבBOX1.

תודה רבה רבה רבה לכל מי שעמל ואפילו רק קרא את זה כדי לנסות לעזור לי אני מודה מקרב לב! (ותודה גדולה יותר למי שיכתוב לי את התשובה עם הסבר כמובן אם ניתן...)

עריכה: הצעת פתרון שלי-האם היא נכונה?

*תעשו העתק הדבק לNOTE PAD זה יותר נוח לקרוא שם...

1.

PAIR temp1 = new PAIR(0,0);

for(int i = 0; i < BOX1.length; i++)

{

temp1 = BOX1.remove(i);

PAIR temp2 = new PAIR(temp1.getX(), temp1.getY());

BOX1.set(temp2);

}

2.

int temp1 = 0;

int max = 0;

PAIR temp2 = new PAIR(0,0);

PAIR temp3 = new PAIR(0,0);

for(int i = 0; i < BOX1.length; i++)

{

temp2 = BOX1.remove(i);

temp1 = temp2.getX() * temp2.getY();

if(temp1 > max)

{

temp3 = temp2;

max = temp1;

}

}

System.out.println(temp3);

פורסם

בשביל שיהיה יותר נוח לקרוא, ערוך את ההודעה ותשתמש בטג קוד (הכפתור שנראה כמו #, ליד הכפתור של הציטוט).

חוץ מזה, תוריד את ה"דחוף" מהכותרת.

לגבי הפתרונות שלך:

1.

קודם כל, ל-BOX אין איבר או פונקציה בשם length, אז אתה לא יכול להשתמש בו. אתה יכול להשתמש רק בפונקציות שנתנו לך (isEmpty, set, remove).

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

אתה יוצר את temp2 להיות זהה ל-temp1. אתה אמור להחליף בין ה-x וה-y.

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

2.

גם כאן אתה משתמש ב-length שאסור, ואתה משנה את BOX1 תוך כדי המעבר עליו (שים לב שכל פעם אתה גם מקדם את i וגם מוריד איבר, זו כפילות).

חוץ מזה, שים לב לשמות המשתנים שלך - temp2 ו-temp3 הם PAIR, אבל temp1 הוא int. זה יכול לבלבל. תן להם שמות יותר אינפורמטיביים.

ארכיון

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

דיונים חדשים