עזרה בויזואל בייסיק - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה בויזואל בייסיק


nati2211

Recommended Posts

שלום, אני התחלתי ללמוד תכנות רק לא מזמן... בויזואל בייסיק .

יש לי בעיה שאני לא מצליח לפתור כבר מספר ימים.

הבעיה הולכת כך :

יש טבלה עם מספרים וצריך למיין אותה לפי האלגוריתם הזה :

  • חפש את פעולה עם הערך הכי מינימלי, אם הערך שייך למכונה A אז שבץ את הפעולה בהתחלה.
  • אם הערך שייך למכונה B אז שבץ את הפעולה בסוף.
  • חזר על הפעולה עד לסיום כל הפעולות הנתונות.

הבעיה שלי היא שאין בויזואל בייסיק פונקציית מינימום ליותר משני ערכים.. השיטה הזו MATH.MIN לא מקבלת יותר משתי ערכים

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

אני צריך לעשות זאת עבור 10 פעולות וזה די הרבה...

מצורפת דוגמא.

תודה לכל העוזרים

http://www.*צונזר*/my/mnmjdydndkdq.png

קישור לתוכן
שתף באתרים אחרים

  • תגובות 43
  • נוצר
  • תגובה אחרונה

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

עשיתי לולאות אבל לא עובד לי...

אני צריך להזכיר שצריך לשמור על הערכים של כל פעולה ולא לערבב ביניהם

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

אם המינימום שייך למכונה A - זמן את הפעולה הנידונה ראשונה

אם המינימום שייך למכונה B - זמן את הפעולה הנידונה אחרונה.

* מחק את הפעולה שזומנה והמשך בתהליך עד לסיום זימון כל הפעולות...

קישור לתוכן
שתף באתרים אחרים

ישבתי על זה מהשעה 8 בבוקר עד 7 בערב ולא עובד שום קוד.

אסביר יותר את הבעיה.

לאלגוריתם קוראים אלגוריתם ג'ונסון - פותר אופטימלית בעיות זימון למכונות.... מקצר זמני בטלה.

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

הערך המינימלי הוא בפעולה 2 (דקה אחת) עבור מכונה A אני ארצה לשבץ את פעולה 2 במקום פעולה 1

כי הוא מצריך דקה אחת למכונה A ולכן הסדר יהיה קודם נבצע את פעולה 2 ואח"כ את פעולה 1.

דוג' נוספת.

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

הערך המינימלי הוא בפעולה 1 ( 0 דקות) עבור מכונה B ולכן ארצה לשבץ אותו בסוף הטור - במקום פעולה 3.

הערך המינימלי הבא מתקבל בפעולה 3 (1דקות) עבור מכונה A ולא נרצה לשבץ אותו כמה שיותר מוקדם.. בהתחלה.

לאחר מכן הערך הנמוך הוא (2 דקות) עבור פעולה 2 למכונה A .. אך מכיון שכל המקומות תפוסים מחישובים קודמים והמקום היחידי שנשאר שם הוא ישובץ.

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

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

מצורפות הטבלאות המסבירות את החישובים.

קישור לתוכן
שתף באתרים אחרים

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

יעזור גם אם תעלה את הבעיה במדויק (מה המבנה של הקלט? איך צריך להיראות הפלט?)

קישור לתוכן
שתף באתרים אחרים


[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]

קישור לתוכן
שתף באתרים אחרים

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

tb זה הערך שהמשתמש מקליד בתיבות טקסט.

t זה העתק של tb לצורך הסכומים והשימוש אחרי זה בהם

הסכומים - כדי לשמור כל ערך לכל פעולה בלי לערבב בין הערכים כלומר לשנות את הזמן של פעולה 2 לזמן של פעולה 4 וכו'

אז עשיתי סכומים ואחרי שמיינתי את הפעולות במכונה A בלבד שמרתי על הערך של כל פעולה במכונה B כחיסור של הסכום פחות הערך במכונה A

וכך קיבלתי את הערך המקורי שהמשתמש הקליד במכונה B

ומכאן נובעים כל ה-IF

שאם כתוב בתיבת טקסט מספר כזה וכזה.... אז בתיבת טקסט ששיכת לאותה פעולה אבל במכונה B תרשום את ההפרש...

מסורבל ולא עובד כראוי...

בגלל זה השאלה שלי איך אני מיון של מספרים כאשר אני שומר על הערכים ולא מערבב ביניהם

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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


×
  • צור חדש...