פורסם 2012 בדצמבר 2512 שנים שלום, אני התחלתי ללמוד תכנות רק לא מזמן... בויזואל בייסיק .יש לי בעיה שאני לא מצליח לפתור כבר מספר ימים.הבעיה הולכת כך :יש טבלה עם מספרים וצריך למיין אותה לפי האלגוריתם הזה :חפש את פעולה עם הערך הכי מינימלי, אם הערך שייך למכונה A אז שבץ את הפעולה בהתחלה.אם הערך שייך למכונה B אז שבץ את הפעולה בסוף.חזר על הפעולה עד לסיום כל הפעולות הנתונות.הבעיה שלי היא שאין בויזואל בייסיק פונקציית מינימום ליותר משני ערכים.. השיטה הזו MATH.MIN לא מקבלת יותר משתי ערכיםובנוסף צריך לשמור על הסדר והערכים של הפעולות כלומר אסור לבלבל בין המספרים איך שרוצים כמו במיון בועות רגיל...אני צריך לעשות זאת עבור 10 פעולות וזה די הרבה...מצורפת דוגמא.תודה לכל העוזריםhttp://www.*צונזר*/my/mnmjdydndkdq.png
פורסם 2012 בדצמבר 2512 שנים בשביל זה יש לולאות. איך באמצעות לולאה פשוטה אפשר למצוא את הערך המינימלי מתוך 10 מספרים?אגב, אתה מדבר על Visual Basic.NET, כן? למה החלטת לבחור בה ולא ב-#C?
פורסם 2012 בדצמבר 2512 שנים מחבר אני רק עכשיו התחלתי ללמוד תכנות... זה מה שנותנים לנו במכללה.עשיתי לולאות אבל לא עובד לי...אני צריך להזכיר שצריך לשמור על הערכים של כל פעולה ולא לערבב ביניהםהאלגוריתם צריך לסדר את המספרים לפי איך שכתבתי קודם...אם המינימום שייך למכונה A - זמן את הפעולה הנידונה ראשונהאם המינימום שייך למכונה B - זמן את הפעולה הנידונה אחרונה.* מחק את הפעולה שזומנה והמשך בתהליך עד לסיום זימון כל הפעולות...
פורסם 2012 בדצמבר 2512 שנים מה זאת אומרת "זה לא עבד לי"? אז תתאמץ יותר... תכתוב פה את הקוד שניסית לכתוב.תתחיל מבעיה יותר פשוטה: נתונים לך 10 מספרים, ואתה רוצה להדפיס את הקטן ביותר מהם. איך עושים את זה?
פורסם 2012 בדצמבר 2512 שנים מחבר ישבתי על זה מהשעה 8 בבוקר עד 7 בערב ולא עובד שום קוד.אסביר יותר את הבעיה.לאלגוריתם קוראים אלגוריתם ג'ונסון - פותר אופטימלית בעיות זימון למכונות.... מקצר זמני בטלה.נניח שיש לי רק שני פעולות שהערכים שלהם הם דקות כפי שמתואר בטבלה הראשונה בהודעה זו.הערך המינימלי הוא בפעולה 2 (דקה אחת) עבור מכונה A אני ארצה לשבץ את פעולה 2 במקום פעולה 1כי הוא מצריך דקה אחת למכונה A ולכן הסדר יהיה קודם נבצע את פעולה 2 ואח"כ את פעולה 1.דוג' נוספת.נניח שיש לי שלוש פעולות שהערכים שלהם הם גם דקות כפי שמתואר בטבלה השניה בהודעה זו.הערך המינימלי הוא בפעולה 1 ( 0 דקות) עבור מכונה B ולכן ארצה לשבץ אותו בסוף הטור - במקום פעולה 3.הערך המינימלי הבא מתקבל בפעולה 3 (1דקות) עבור מכונה A ולא נרצה לשבץ אותו כמה שיותר מוקדם.. בהתחלה.לאחר מכן הערך הנמוך הוא (2 דקות) עבור פעולה 2 למכונה A .. אך מכיון שכל המקומות תפוסים מחישובים קודמים והמקום היחידי שנשאר שם הוא ישובץ.מקווה שהבנת.. אם לא .. אשמח להתקשר אליך ולהסביר לך, כמובן שבמידה ותרצה אז אשלם לך בהתאם.יש לציין שאוכל להפנות אליך סטודנטים רבים בשבועות הקרובים לצורך התייעצויות או עזרה כמובן שבתשלום הולם.מצורפות הטבלאות המסבירות את החישובים.
פורסם 2012 בדצמבר 2512 שנים עדיין לא הסברת איפה אתה מתקשה. מה זאת אומרת "לא עובד שום קוד"? אם יש לך קוד שכתבת והוא "לא עובד", אז תעלה אותו לכאן ונוכל לנסות להבין מה לא טוב בו ומה אתה צריך לתקן.יעזור גם אם תעלה את הבעיה במדויק (מה המבנה של הקלט? איך צריך להיראות הפלט?)
פורסם 2012 בדצמבר 2512 שנים מחבר [pre]הקלט הוא הזמן בדקות לכל פעולה עבור שתי המכונות.הפלט יהיה הזימון האופטימלי על פי האלגוריתם שהצגתי קודם.הנה הקוד שעשיתי ונתקעתי איתו... ייתכן וכולו שגויDim tb(40), t(40), sum(40), temp, min(19) As Single, big As Double tb(0) = TextBox1.Text tb(1) = TextBox2.Text tb(2) = TextBox3.Text tb(3) = TextBox4.Text tb(4) = TextBox5.Text tb(5) = TextBox6.Text tb(6) = TextBox7.Text tb(7) = TextBox8.Text tb( = TextBox9.Text tb(9) = TextBox10.Text tb(10) = TextBox11.Text tb(11) = TextBox12.Text tb(12) = TextBox13.Text tb(13) = TextBox14.Text tb(14) = TextBox15.Text tb(15) = TextBox16.Text tb(16) = TextBox17.Text tb(17) = TextBox18.Text tb(18) = TextBox19.Text tb(19) = TextBox20.Text t(0) = TextBox1.Text t(1) = TextBox2.Text t(2) = TextBox3.Text t(3) = TextBox4.Text t(4) = TextBox5.Text t(5) = TextBox6.Text t(6) = TextBox7.Text t(7) = TextBox8.Text t( = TextBox9.Text t(9) = TextBox10.Text t(10) = TextBox11.Text t(11) = TextBox12.Text t(12) = TextBox13.Text t(13) = TextBox14.Text t(14) = TextBox15.Text t(15) = TextBox16.Text t(16) = TextBox17.Text t(17) = TextBox18.Text t(18) = TextBox19.Text t(19) = TextBox20.Text sum(0) = t(0) + t(10) sum(1) = t(1) + t(11) sum(2) = t(2) + t(12) sum(3) = t(3) + t(13) sum(4) = t(4) + t(14) sum(5) = t(5) + t(15) sum(6) = t(6) + t(16) sum(7) = t(7) + t(17) sum( = t( + t(18) sum(9) = t(9) + t(19) For j = 0 To 9 For i = 0 To 8 If tb(i) > tb(i + 1) Then temp = tb(i) tb(i) = tb(i + 1) tb(i + 1) = temp End If Next Next TextBox1.Text = tb(0) TextBox2.Text = tb(1) TextBox3.Text = tb(2) TextBox4.Text = tb(3) TextBox5.Text = tb(4) TextBox6.Text = tb(5) TextBox7.Text = tb(6) TextBox8.Text = tb(7) TextBox9.Text = tb( TextBox10.Text = tb(9) If TextBox1.Text = t(0) Then TextBox11.Text = sum(0) - t(0) End If If TextBox1.Text = t(1) Then TextBox11.Text = sum(1) - t(1) End If If TextBox1.Text = t(2) Then TextBox11.Text = sum(2) - t(2) End If If TextBox1.Text = t(3) Then TextBox11.Text = sum(3) - t(3) End If If TextBox1.Text = t(4) Then TextBox11.Text = sum(4) - t(4) End If If TextBox1.Text = t(5) Then TextBox11.Text = sum(5) - t(5) End If If TextBox1.Text = t(6) Then TextBox11.Text = sum(6) - t(6) End If If TextBox1.Text = t(7) Then TextBox11.Text = sum(7) - t(7) End If If TextBox1.Text = t( Then TextBox11.Text = sum( - t( End If If TextBox1.Text = t(9) Then TextBox11.Text = sum(9) - t(9) End If If TextBox2.Text = t(0) Then TextBox12.Text = sum(0) - t(0) ElseIf TextBox2.Text = t(1) Then TextBox12.Text = sum(1) - t(1) ElseIf TextBox2.Text = t(2) Then TextBox12.Text = sum(2) - t(2) ElseIf TextBox2.Text = t(3) Then TextBox12.Text = sum(3) - t(3) ElseIf TextBox2.Text = t(4) Then TextBox12.Text = sum(4) - t(4) ElseIf TextBox2.Text = t(5) Then TextBox12.Text = sum(5) - t(5) ElseIf TextBox2.Text = t(6) Then TextBox12.Text = sum(6) - t(6) ElseIf TextBox2.Text = t(7) Then TextBox12.Text = sum(7) - t(7) ElseIf TextBox2.Text = t( Then TextBox12.Text = sum( - t( ElseIf TextBox2.Text = t(9) Then TextBox12.Text = sum(9) - t(9) End If If TextBox3.Text = t(0) Then TextBox13.Text = sum(0) - t(0) ElseIf TextBox3.Text = t(1) Then TextBox13.Text = sum(1) - t(1) ElseIf TextBox3.Text = t(2) Then TextBox13.Text = sum(2) - t(2) ElseIf TextBox3.Text = t(3) Then TextBox13.Text = sum(3) - t(3) ElseIf TextBox3.Text = t(4) Then TextBox13.Text = sum(4) - t(4) ElseIf TextBox3.Text = t(5) Then TextBox13.Text = sum(5) - t(5) ElseIf TextBox3.Text = t(6) Then TextBox13.Text = sum(6) - t(6) ElseIf TextBox3.Text = t(7) Then TextBox13.Text = sum(7) - t(7) ElseIf TextBox3.Text = t( Then TextBox13.Text = sum( - t( ElseIf TextBox3.Text = t(9) Then TextBox13.Text = sum(9) - t(9) End If If TextBox4.Text = t(0) Then TextBox14.Text = sum(0) - t(0) ElseIf TextBox4.Text = t(1) Then TextBox14.Text = sum(1) - t(1) ElseIf TextBox4.Text = t(2) Then TextBox14.Text = sum(2) - t(2) ElseIf TextBox4.Text = t(3) Then TextBox14.Text = sum(3) - t(3) ElseIf TextBox4.Text = t(4) Then TextBox14.Text = sum(4) - t(4) ElseIf TextBox4.Text = t(5) Then TextBox14.Text = sum(5) - t(5) ElseIf TextBox4.Text = t(6) Then TextBox14.Text = sum(6) - t(6) ElseIf TextBox4.Text = t(7) Then TextBox14.Text = sum(7) - t(7) ElseIf TextBox4.Text = t( Then TextBox14.Text = sum( - t( ElseIf TextBox4.Text = t(9) Then TextBox14.Text = sum(9) - t(9) End If If TextBox5.Text = t(0) Then TextBox15.Text = sum(0) - t(0) ElseIf TextBox5.Text = t(1) Then TextBox15.Text = sum(1) - t(1) ElseIf TextBox5.Text = t(2) Then TextBox15.Text = sum(2) - t(2) ElseIf TextBox5.Text = t(3) Then TextBox15.Text = sum(3) - t(3) ElseIf TextBox5.Text = t(4) Then TextBox15.Text = sum(4) - t(4) ElseIf TextBox5.Text = t(5) Then TextBox15.Text = sum(5) - t(5) ElseIf TextBox5.Text = t(6) Then TextBox15.Text = sum(6) - t(6) ElseIf TextBox5.Text = t(7) Then TextBox15.Text = sum(7) - t(7) ElseIf TextBox5.Text = t( Then TextBox15.Text = sum( - t( ElseIf TextBox5.Text = t(9) Then TextBox15.Text = sum(9) - t(9) End If If TextBox6.Text = t(0) Then TextBox16.Text = sum(0) - t(0) ElseIf TextBox6.Text = t(1) Then TextBox16.Text = sum(1) - t(1) ElseIf TextBox6.Text = t(2) Then TextBox16.Text = sum(2) - t(2) ElseIf TextBox6.Text = t(3) Then TextBox16.Text = sum(3) - t(3) ElseIf TextBox6.Text = t(4) Then TextBox16.Text = sum(4) - t(4) ElseIf TextBox6.Text = t(5) Then TextBox16.Text = sum(5) - t(5) ElseIf TextBox6.Text = t(6) Then TextBox16.Text = sum(6) - t(6) ElseIf TextBox6.Text = t(7) Then TextBox16.Text = sum(7) - t(7) ElseIf TextBox6.Text = t( Then TextBox16.Text = sum( - t( ElseIf TextBox6.Text = t(9) Then TextBox16.Text = sum(9) - t(9) End If If TextBox7.Text = t(0) Then TextBox17.Text = sum(0) - t(0) ElseIf TextBox7.Text = t(1) Then TextBox17.Text = sum(1) - t(1) ElseIf TextBox7.Text = t(2) Then TextBox17.Text = sum(2) - t(2) ElseIf TextBox7.Text = t(3) Then TextBox17.Text = sum(3) - t(3) ElseIf TextBox7.Text = t(4) Then TextBox17.Text = sum(4) - t(4) ElseIf TextBox7.Text = t(5) Then TextBox17.Text = sum(5) - t(5) ElseIf TextBox7.Text = t(6) Then TextBox17.Text = sum(6) - t(6) ElseIf TextBox7.Text = t(7) Then TextBox17.Text = sum(7) - t(7) ElseIf TextBox7.Text = t( Then TextBox17.Text = sum( - t( ElseIf TextBox7.Text = t(9) Then TextBox17.Text = sum(9) - t(9) End If If TextBox8.Text = t(0) Then TextBox18.Text = sum(0) - t(0) ElseIf TextBox8.Text = t(1) Then TextBox18.Text = sum(1) - t(1) ElseIf TextBox8.Text = t(2) Then TextBox18.Text = sum(2) - t(2) ElseIf TextBox8.Text = t(3) Then TextBox18.Text = sum(3) - t(3) ElseIf TextBox8.Text = t(4) Then TextBox18.Text = sum(4) - t(4) ElseIf TextBox8.Text = t(5) Then TextBox18.Text = sum(5) - t(5) ElseIf TextBox8.Text = t(6) Then TextBox18.Text = sum(6) - t(6) ElseIf TextBox8.Text = t(7) Then TextBox18.Text = sum(7) - t(7) ElseIf TextBox8.Text = t( Then TextBox18.Text = sum( - t( ElseIf TextBox8.Text = t(9) Then TextBox18.Text = sum(9) - t(9) End If If TextBox9.Text = t(0) Then TextBox19.Text = sum(0) - t(0) ElseIf TextBox9.Text = t(1) Then TextBox19.Text = sum(1) - t(1) ElseIf TextBox9.Text = t(2) Then TextBox19.Text = sum(2) - t(2) ElseIf TextBox9.Text = t(3) Then TextBox19.Text = sum(3) - t(3) ElseIf TextBox9.Text = t(4) Then TextBox19.Text = sum(4) - t(4) ElseIf TextBox9.Text = t(5) Then TextBox19.Text = sum(5) - t(5) ElseIf TextBox9.Text = t(6) Then TextBox19.Text = sum(6) - t(6) ElseIf TextBox9.Text = t(7) Then TextBox19.Text = sum(7) - t(7) ElseIf TextBox9.Text = t( Then TextBox19.Text = sum( - t( ElseIf TextBox9.Text = t(9) Then TextBox19.Text = sum(9) - t(9) End If If TextBox10.Text = t(0) Then TextBox20.Text = sum(0) - t(0) ElseIf TextBox10.Text = t(1) Then TextBox20.Text = sum(1) - t(1) ElseIf TextBox10.Text = t(2) Then TextBox20.Text = sum(2) - t(2) ElseIf TextBox10.Text = t(3) Then TextBox20.Text = sum(3) - t(3) ElseIf TextBox10.Text = t(4) Then TextBox20.Text = sum(4) - t(4) ElseIf TextBox10.Text = t(5) Then TextBox20.Text = sum(5) - t(5) ElseIf TextBox10.Text = t(6) Then TextBox20.Text = sum(6) - t(6) ElseIf TextBox10.Text = t(7) Then TextBox20.Text = sum(7) - t(7) ElseIf TextBox10.Text = t( Then TextBox20.Text = sum( - t( ElseIf TextBox10.Text = t(9) Then TextBox20.Text = sum(9) - t(9) End If min(0) = Math.Min(tb(10), tb(11)) min(1) = Math.Min(tb(12), tb(13)) min(2) = Math.Min(tb(14), tb(15)) min(3) = Math.Min(tb(16), tb(17)) min(4) = Math.Min(tb(18), tb(19)) min(5) = Math.Min(min(0), min(1)) min(6) = Math.Min(min(2), min(3)) min(7) = Math.Min(min(5), min(6)) min( = Math.Min(min(7), min(4)) For q = 0 To 19 min(0) = Math.Min(tb(q), tb(q + 10)) min(0) = Math.Min(tb(q), tb(q + 10)) Next[/pre]
פורסם 2012 בדצמבר 2512 שנים לא עשית מה שביקשתי.תערוך את ההודעה ושים את הקוד בתוך טג קוד כדי שיהיה קריא.
פורסם 2012 בדצמבר 2512 שנים אוקי, עכשיו אפשר להבין מה כתוב שם. אבל מה בכלל הקוד הזה אומר? מה זה t? tb? מה אומרות 20 תיבות הטקסט (חשבתי שיש 10 מספרים)? מה הקטע עם הסכומים? למה בכלל כל ה-ifים המסורבלים בסוף?
פורסם 2012 בדצמבר 2512 שנים מחבר בגלל זה אמרתי שנתקעתי בגלל שהכל מסורבל וארוך - בטוח שיש לולאות מתוחכמות שעושות את העבודה הזו.tb זה הערך שהמשתמש מקליד בתיבות טקסט.t זה העתק של tb לצורך הסכומים והשימוש אחרי זה בהםהסכומים - כדי לשמור כל ערך לכל פעולה בלי לערבב בין הערכים כלומר לשנות את הזמן של פעולה 2 לזמן של פעולה 4 וכו'אז עשיתי סכומים ואחרי שמיינתי את הפעולות במכונה A בלבד שמרתי על הערך של כל פעולה במכונה B כחיסור של הסכום פחות הערך במכונה Aוכך קיבלתי את הערך המקורי שהמשתמש הקליד במכונה Bומכאן נובעים כל ה-IF שאם כתוב בתיבת טקסט מספר כזה וכזה.... אז בתיבת טקסט ששיכת לאותה פעולה אבל במכונה B תרשום את ההפרש...מסורבל ולא עובד כראוי...בגלל זה השאלה שלי איך אני מבצע מיון של מספרים כאשר אני שומר על הערכים ולא מערבב ביניהםאו לפחות איך לבצע השוואה בפונקציית מינימום ביותר משני ערכים
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.