ABA


"|עזרה| בכתיבת קוד לתוכנית בג'אווה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15360 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15360
DanGati
חבר מתאריך 9.4.06
1694 הודעות
   08:27   11.06.09   
אל הפורום  
  |עזרה| בכתיבת קוד לתוכנית בג'אווה  
 
   ערכתי לאחרונה בתאריך 11.06.09 בשעה 08:31 בברכה, DanGati
 
שלום יש לי פרוייקט בג'אווה שאני צריך להגיש והייתי מעוניין לקבל קצת עזרה
אני צריך לכתוב את האלוגריתם המצורף:
נתון J שזה מס' מכונה
ו tAJ זמן עיבוד במכונה

נתונה הטבלה הבאה:

סכום 4 3 2 1 J
15 5 1 7 2 tAJ
12 1 2 5 4 tBJ
27 10 6 5 6 tCJ

צריך לחשב LB1, LB2, LB3

LB1 מחושב בצורה הבאה:
לוקחים את הסכום של tAJ ומוסיפים לו את הסכום המינימאלי של tBJ + tCJ לאותו J. לדוגמא: 23=(2+6)+15. 15 זה הסכום של tAJ ו 2+6 זה הסכום המינימאלי של tBJ + tCJ, וזה קורה ב J = 3.

LB2 מחושב בצורה הבאה:
לוקחים את הסכום של tBJ ומוסיפים לו את הסכום המינימאלי של tAJ + tCJ לא מאותו J. לדוגמא: 18=(1+5)+12. 12 זה הסכום של tBJ ו 1+5 זה הסכום המינימאלי של tAJ + tCJ כאשר 1 הוא ב J=3 ו 5 הוא ב J=2.

LB3 מחושב בצורה הבאה:
לוקחים את הסכום של tCJ ומוסיפים לו את הסכום המינימאלי של tAJ + tBJ לאותו J. לדוגמא: 30=(1+2)+27. 27 זה הסכום של tCJ ו 1+2 זה הסכום המינימאלי של tAJ + tBJ, וזה קורה ב J = 3.

חישוב LB:
המקסימום בין LB1,LB2,LB3.

לאחר חישוב LB צריך לבדוק האם tBJ נשלט ע"י tAJ או tCJ עושים זאת כך:
אם המספר המינימאלי בשורה של tAJ גדול או שווה למספר המקסימאלי בשורה של tBJ אז tAJ שולט על tBJ.

אם המספר המינימאלי בשורה של tCJ גדול או שווה למספר המקסימאלי בשורה של tBJ אז tCJ שולט על tBJ.

במקרה שלנו tCJ שולט על tBJ.המספר המינימאלי ב tCJ הוא 5 והוא גדול או שווה למספר המקסימאלי ב tBJ.

אם tBJ לא נשלטת יש לכתוב הפיתרון לא יהיה אופטימאלי.
אם כן צריך לאחד את tAJ,tBJ,tCJ ל-2 (tIJ,tIIJ) עושים זאת כך:
tIJ שווה ל tAJ + tBJ לכל J.
tIIJ שווה ל tBJ + tCJ לכל J.

יראה כך:

4 3 2 1 J
6 3 12 6 tIJ
11 8 10 10 tIIJ

לאחר השלב הזה מתחילים לחפש את ה J שהוא בעל הזמן הכי קטן אם הוא נמצא ב tIJ הוא הולך שמאלה, אם ב tIIJ הוא הולך ימינה. מוחקים כל J ששובץ.
לדוגמא:
המס' המינימאלי הוא 3, הוא נמצא ב tIJ והוא שייך ל J=3, לכן J=3 יפתח את הסידור (הולך שמאלה). המס' הבא בתור הוא 6, הוא נמצא ב tIJ והוא שייך גם ל J=1 וגם ל J=4, לכן יש ריבוי פתרונות, לא משנה מי קודם הולך שמאלה או 1 או 4.
המס' הבא בתור הוא 10,כי 8 נמחק כאשר שיבצנו כבר את J=3, הוא נמצא ב tIIJ, הוא שייך ל J=2 הוא ילך ימינה ז"א יסגור את הסידור (יהיה אחרון).

בסופו של דבר הסידור יראה כך:

2 1 4 3
או
2 4 1 3

לאחר שמצאנו את הסידור האופטימאלי צריך לחזור לצורה של 3 (tAJ,tBJ,tCJ) ע"פ הסידור החדש את הזמנים לכל J מעתיקים מהטבלה הראשונה.

2 1 4 3 J
7 2 5 1 tAJ
5 4 1 2 tBJ
5 6 10 6 tCJ

מחשבים את CAJ,CBJ,CCJ בצורה הבאה:
CAJ: מתחיל בערך של tAJ של ה J הראשון ומוסיפים לו את הערכים הבאים בתור בשורה של tAJ.

CBJ: לוקחים את המספר הראשון ב CAJ מוסיפים לו את המספר הראשון ב tBJ ומקבלים את המספר הראשון ב CBJ. לחישוב הערכים הבאים בשורה צריך לעשות את החישוב הבא:
המקסימום בין הערך הנוכחי של CBJ לערך הבא בתור ב CAJ. אם הערך ב CBJ יותר גדול מוסיפים לו את הערך של tBJ. אם הערך ב CAJ יותר גדול מוסיפים לו את הערך ב tBJ.

CCJ: מחושב בדיוק אותו הדבר כמו CBJ רק שבמקום CBJ מופיע CCJ ובמכום CAJ מופיע CBJ. והערך שמתווסף הוא מ tCJ.

לבסוף הטבלה ניראת כך:

2 1 4 3 J
7 2 5 1 tAJ
5 4 1 2 tBJ
5 6 10 6 tCJ

15 8 6 1 CAJ
20 12 7 3 CBJ
30 25 19 9 CCJ

בסופו של דבר צריך להיות פלט עם הסידור האופטימאלי ( אחד או יותר) ועם ה C המקסימאלי (במקרה שלנו C MAX = 30)

לדוגמא:
הסידור האופטימאלי 2 1 4 3 או 2 4 1 3
C MAX: 30


תודה מקרב לב לעוזרים


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  וואו, לא מאמין שקראתי את הכל. Deuce  11.06.09 10:12 1
     אני ממש לא מצליח לממש את זה בגאווה DanGati 11.06.09 11:36 2
         תקשיב, akoka 11.06.09 11:53 3
             שאלה ראשונה... DanGati 11.06.09 12:01 4
                 לא קריטי. במיוחד כשמדובר בג'אווה. ldan192  11.06.09 12:26 5
                     אחרי שמצאתי את המספר המינימאלי בשורה DanGati 11.06.09 18:54 6
                         תשמור עוד שדה (טאפל או סתם קאונטר) שמכיל את האינדקס. ldan192  11.06.09 18:55 7
                             לאחר שמצאתי את המספר המינימאלי והאינדקס DanGati 12.06.09 14:04 8
  ??? DanGati 12.06.09 22:16 9

       
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   10:12   11.06.09   
אל הפורום  
  1. וואו, לא מאמין שקראתי את הכל.  
בתגובה להודעה מספר 0
 
לא להעליב, פשוט זה כל כך משעמם אבל בסדר - טוב לתרגל אני יודע
האמת להגיד לך בן אדם, תיארת את הבעייה כל כך טוב, וזה לא נראה מועתק ההסבר הזה כי הוא לא פורמלי ועם זאת הוא כל כך מדוייק (עד כדי העובדה שהוא הועבר בצורה עממית לחלוטין)

בגלל שהבנת ופירטת כל כך אז אין לי כל כך אפשרות להבין מה למעשה הבעייה שלך לממש את זה.

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


public static int minAr(int ar) {
int k = ar;
for (int i=1; i<ar.length-1; ++i)
if (ar < k)
k = ar;
return k;
}

ועוד אתה צריך נניח שם מינימום מקבילי של שני מערכים:

public static int minSumAr(int ar1 , int ar2) {
int k = ar1 + ar2;
for (int i=1; i<ar1.length-1; ++i) {
tempSum = ar1 + ar2;
if (tempSum < k)
k = tempSum;
}
return k;
}

(תעתיק את זה לאיזה כתבן כי כרום, רוטר וקידוד לא הולכים הכי טוב).
בכל מקרה, אני לא באמת חושב שאני עוזר לך.

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

או שתסביר מה באמת הסתבכת.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DanGati
חבר מתאריך 9.4.06
1694 הודעות
   11:36   11.06.09   
אל הפורום  
  2. אני ממש לא מצליח לממש את זה בגאווה  
בתגובה להודעה מספר 1
 
   אני אשמח אם לכל שלב שכתבתי כל כך יפה בעברית יהיה תרגום לשפת קוד
ככה שאני יוכל שלב שלב לראות מה עושים
כי הראש שלי ממש מבולבל ואני לא יודע איך להתחיל

תודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   11:53   11.06.09   
אל הפורום  
  3. תקשיב,  
בתגובה להודעה מספר 2
 
   אנשים פה יעזרו לך בכיף, אבל אף אחד לא ייכתוב לך את הפרוייקט כולו, תתחיל שאלה שאלה, אם אתה מסתבך, אז בכיף יעזרו לך.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DanGati
חבר מתאריך 9.4.06
1694 הודעות
   12:01   11.06.09   
אל הפורום  
  4. שאלה ראשונה...  
בתגובה להודעה מספר 3
 
   האם ליצור את הטבלה הזו כמערך דו מימדי או שעדיף שכל שורה בטבלה תהיה מערך בפני עצמו?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   12:26   11.06.09   
אל הפורום  
  5. לא קריטי. במיוחד כשמדובר בג'אווה.  
בתגובה להודעה מספר 4
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DanGati
חבר מתאריך 9.4.06
1694 הודעות
   18:54   11.06.09   
אל הפורום  
  6. אחרי שמצאתי את המספר המינימאלי בשורה  
בתגובה להודעה מספר 5
 
   לדוגמא:
נתון המערך הבא

5 4 3 5 1
9 4 5 2 7
3 8 7 5 4

הרצתי את הלולאה הבאה:

int min= arr
for(i=0,arr.length,i++)
{
if(arr<min)
min=arr
}
למציאת המינימום בשורה הראשונה

איך אני יודע עכשיו מה האינדקס של המספר המינימאלי שהוצאתי?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   18:55   11.06.09   
אל הפורום  
  7. תשמור עוד שדה (טאפל או סתם קאונטר) שמכיל את האינדקס.  
בתגובה להודעה מספר 6
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DanGati
חבר מתאריך 9.4.06
1694 הודעות
   14:04   12.06.09   
אל הפורום  
  8. לאחר שמצאתי את המספר המינימאלי והאינדקס  
בתגובה להודעה מספר 7
 
   איך אני מחשב את הפונקציה הבאה:

אם נתונה הטבלה הבאה:

סכום 4 3 2 1 J
15 5 1 7 2 tAJ
12 1 2 5 4 tBJ
27 10 6 5 6 tCJ

צריך לחשב LB1, LB2, LB3

LB1 מחושב בצורה הבאה:
לוקחים את הסכום של tAJ ומוסיפים לו את הסכום המינימאלי של tBJ + tCJ לאותו J. לדוגמא: 23=(2+6)+15. 15 זה הסכום של tAJ ו 2+6 זה הסכום המינימאלי של tBJ + tCJ, וזה קורה ב J = 3.

LB2 מחושב בצורה הבאה:
לוקחים את הסכום של tBJ ומוסיפים לו את הסכום המינימאלי של tAJ + tCJ לא מאותו J. לדוגמא: 18=(1+5)+12. 12 זה הסכום של tBJ ו 1+5 זה הסכום המינימאלי של tAJ + tCJ כאשר 1 הוא ב J=3 ו 5 הוא ב J=2.

LB3 מחושב בצורה הבאה:
לוקחים את הסכום של tCJ ומוסיפים לו את הסכום המינימאלי של tAJ + tBJ לאותו J. לדוגמא: 30=(1+2)+27. 27 זה הסכום של tCJ ו 1+2 זה הסכום המינימאלי של tAJ + tBJ, וזה קורה ב J = 3.

חישוב LB:
המקסימום בין LB1,LB2,LB3.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DanGati
חבר מתאריך 9.4.06
1694 הודעות
   22:16   12.06.09   
אל הפורום  
  9. ???  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net