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

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


nati2211

Recommended Posts

נתחיל מזה שאחרי שקראת את כל הערכים פעם אחת לתוך tb, אתה לא צריך לעשות את זה שוב לתוך t - אפשר פשוט להעתיק מ-tb ל-t בלולאה פשוטה.

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

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

יש מבין?

חוץ מזה, הערה קטנה אך חשובה: תן שמות משמעותיים למשתנים שלך. tb ו-t הם לא שמות משמעותיים, כי מי שקורא אותם לא יכול להבין מה הם אמורים להביע.

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

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

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

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

אם אצטרך לעשות את הקוד כפי שעשיתי - אני נדרש מהקורס לעשות עד 10 ערכים

זאת אומרת 10 עצרת חישובים

זה מספר ענק מאוד של לולאות ותנאים.

אם יש שיטה של בדיקת מינימום בין 10 מספרים או לפחות יותר מ2 מספרים זה יקל מאוד....

או מיון בעזרת שמירה על ערכים מקבילים

ערך של פעולה 1 במכונה A ו B צריכות להישמר לאורך כל התוכנה

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

זה הסיבוכיות חישוב..

אולי לא הבנת כל כך אבל אחרי שמצאתי את המינימום בכל הטבלה אני משבץ אותו

ואז ממשיך לחפש את המינימום הבא אחריו

כל זאת על פי האילוצים שרשמתי קודם...

אם המינימום שייך למכונה A אז נשבץ בהתחלה

אם המינימום שייך למכונה B אז נשבץ בסוף...

אתה לא יכול לעזור לי אחי ?

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

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

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

איך תעשה את זה?

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

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

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

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

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

בוחר בערך אחר מתוך הטבלה, ובודק את אותו הדבר...

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

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

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




[size=1] time(0, 0) = TextBox1.Text[/size]
[size=1] time(0, 1) = TextBox2.Text[/size]
[size=1] time(0, 2) = TextBox3.Text[/size]
[size=1] time(0, 3) = TextBox4.Text[/size]
[size=1] time(0, 4) = TextBox5.Text[/size]
[size=1] time(0, 5) = TextBox6.Text[/size]
[size=1] time(0, 6) = TextBox7.Text[/size]
[size=1] time(0, 7) = TextBox8.Text[/size]
[size=1] time(0, 8) = TextBox9.Text[/size]
[size=1] time(0, 9) = TextBox10.Text[/size]
[size=1] time(1, 0) = TextBox11.Text[/size]
[size=1] time(1, 1) = TextBox12.Text[/size]
[size=1] time(1, 2) = TextBox13.Text[/size]
[size=1] time(1, 3) = TextBox14.Text[/size]
[size=1] time(1, 4) = TextBox15.Text[/size]
[size=1] time(1, 5) = TextBox16.Text[/size]
[size=1] time(1, 6) = TextBox17.Text[/size]
[size=1] time(1, 7) = TextBox18.Text[/size]
[size=1] time(1, 8) = TextBox19.Text[/size]
[size=1] time(1, 9) = TextBox20.Text[/size]

[size=1] a = 9[/size]

[size=1] For I = 1 To 0 Step -1[/size]
[size=1] For j = 0 To 9[/size]
[size=1] For v = 0 To 9[/size]
[size=1] If time(I, j) < time(I, v) And time(I, j) <= time(j + 1, v) Then[/size]
[size=1] '' פה יהיה האלגוריתם... אבל התנאי שגוי נראה לי...[/size]
[size=1] End If[/size]

[size=1] Next[/size]
[size=1] Next[/size]

[size=1] Next[/size]

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

עזוב לרגע את הבעיה שנתנו לך!

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

תזכור את הכלים שיש לך. אתה יכול להשוות בין שני מספרים (באמצעות Math.Min או באמצעות האופרטורים < ו->), אתה יכול לשמור ערכים במשתנים, ואתה יכול לעשות לולאות.

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

אח שלי אני יודע ומכיר את השיטות הללו...

כנראה שאתה לא מבין את אלגוריתם ג'ונסון - שנינו באים מתחומים שונים..

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

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

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

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

דוגמה לכתיבת "קוד" במילים:

משווה בין האיבר השני לראשון

אם הראשון גדול יותר אז...

אם השני גדול יותר אז..

וכו'

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

Dim a(9),temp as integer

for i= to 9

for j = 0 to 8

if a(j) > a(j+1) then

temp = a(j)

a(j) = a(j+1)

a(j+1) = temp

next

next

msgbox(a(0))

אח שלי אני יודע איך לעשות

האלגוריתם מורכב ומסובך..

אם לדעתכם זה פשוט

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

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

ארכיון

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


×
  • צור חדש...