פורסם 2012 במרץ 1113 שנים שלום לכולם! אני צריך עזרה בתרגיל מבגרות(רמה של 5 יחל) צריך לכתוב פעולה חיצונית(הנקראת onepath) למחלקה עץ בינארי. פעולה זו מחזירה אמת אם קיים בעץ מסלול התחיל בשורש העץ ונגמר באחד העלים שלו, וכל ערכי הצמתים בו זהים. אחרת הפכולה מחזירה שקר. נקודות הנחה:העץ התקבל אינו ריק,והערכים שלו הם רק 1 או 2. או לא הבנתם את השאלה אפשר לקרוא אותה כאן השאלה בעמוד 5. אני כתבתי את הפעולה המצורפת. תסלחו לי שאני מעלה את זה בצורה כזאת, פשוט זה לא התאפשר לי לכתוב את זה בדרך הרגילה... יש לי בעיה קטנה בפעולה שכתבתי,מספיק שרק הצומת השמאלית הראשונה של העץ תהיה שווה לשורש,והפעולה לא תבדוק את כל התת עץ הימני... אני אודה לכם מאוד אם תנחו אותי, כיצד לפתור את הבעיה הזאת! תודה מראש! [attachment deleted by admin]
פורסם 2012 במרץ 1113 שנים הבעיה היא בדיוק מה שאמרת - אם הבדיקה על תת העץ השמאלי נכשלת (דהיינו, מחזירה false), אתה לא בודק את תת העץ הימני. תדאג במקרה הזה בכל זאת לבדוק את תת העץ הימני.חוץ מזה, לא טיפלת במקרה שלצומת יש רק תת עץ אחד (כלומר בן אחד הוא null והאחר לא).
פורסם 2012 במרץ 1113 שנים מחבר אם אני יוסיף אני התנאי הראשון את התנאי הבא זה יעבוד? if(a==t.GetLeft().Get.info() && a== t.GetRight.Getinfo()) f return onepath(t.Getleft) +onepath(t.GetRight) a(אם אני לא טועה)צד אחד יחזיר שקר והאחר יחזיר אמת, אז יווצר המצב הבא return false + true אז מה זה יחזיר בסופו של דבר, שקר או אמת??
פורסם 2012 במרץ 1113 שנים כמעטרמז - &&וב-RETURN אתה לא צריך להסתבך עם פלוסתחזיר פשוט אמתבכל מקרה אתה צריך גם ELSEאחרי שתפתור את ה-IF הזהתחשוב איך אפשר פשוט לרשום את כל ה-IF (עם ה-THEN וה ELSE שלו) בשורה אחת
פורסם 2012 במרץ 1113 שנים מה זה +? נראה לי שהתכוונת ל-||, יענו "או".תנסח לעצמך בראש מה התנאי שצריך להתקיים, לדוגמה: "צריך להתקיים __ או __ וגם __ או __" (זו סתם דוגמה, זה לא בהכרח המבנה של התנאי שצריך להיות לך)
פורסם 2012 במרץ 1113 שנים מחבר nirt לא ככ הבנתי למה אתה מתכוון...שניצל אתה צודק, התכוונתי ל-||. אז אם יש לי return false||true מה יוחזר??ומה יקרה אם אני ישנה את הסימן הזה ל-&& ,מה יוחזר אז?
פורסם 2012 במרץ 1113 שנים && זה "וגם", דהיינו "אמת אם שני הפסוקים הם אמת", ו-|| זה "או", דהיינו "אמת אם לפחות אחד מהפסוקים הוא אמת".
פורסם 2012 במרץ 1113 שנים מחבר אוקיי,אז לפי מה שאני מבין זה אמור לעבוד, או שאולי אתם רואים פה טעות כלשהי,(אני פשוט לא יכול לבדוק את זה על המחשב...)תודה לשניכם על העזרה!!
פורסם 2012 במרץ 1113 שנים מחבר מה שרשמתי בהתחלה בתוספת הקוד הבא לאחר התנאי הראשון:if(a==t.GetLeft().Get.info() && a== t.GetRight.Getinfo()) f return onepath(t.Getleft) || onepath(t.GetRight) a
פורסם 2012 במרץ 1113 שנים מה ההגיון בבדיקה הזו?a==t.GetLeft().Get.info() && a== t.GetRight.Getinfo()בכל מקרה, את הקוד שים בטג קוד שיהיה יותר ברור.
פורסם 2012 במרץ 1213 שנים מחבר ^^שיניתי את מה שאחרי התנאי הראשון לקוד הבא:if(a!=t.getleft.getinfo && a!=t.getright.getinfo)return false;else return onepath(t.getleft) || onepath(t.getright)
פורסם 2012 במרץ 1213 שנים כמעט - עדיין יש לך בעיה בקוד. תנסח את התנאי שלך בצורה ברורה בעברית ואז תתרגם אותו לקוד.וכאמור, אתה לא בודק את המקרה שאחד הבנים הוא null והאחר לא.
פורסם 2012 במרץ 1313 שנים מחבר כתבתי את כל הקוד ותיקנתי את הטעויות שהבנתי...public static bool onepath(Bintree<int> t){int a=t.getinfo;if(t.Getright()==null && t.Getleft==null;return true;if(t.getleft!=null && t.getright!=null){if(t.getright.getinfo!=a&&t.getleft.getinfo!=a)return false;else if(t.getright.getinfo==a)return onepath(t.getright;else return onepath(t.getleft);}else if(t.getright!=null){if(t.getleft.getinfo==a)return onepath(t.getleft)else return false;}else if (t.getright.getinfo==a)return onepath(t.getright)else return false;{
פורסם 2012 במרץ 1313 שנים הקוד שלך מסובך להחריד. אתה בודק את אותם דברים שוב ושוב, ועדיין יש לך את הבעיה שהייתה לך בהתחלה.חוץ מזה, כדאי לך להשתמש בהזחות (טאבים) כי כרגע קשה להבין מה קורה בקוד שלך.אני אומר שוב:תנסח את התנאי שלך בצורה ברורה בעברית ואז תתרגם אותו לקוד.אופציה נוספת: תתחיל מלכתוב את הקוד הרלוונטי לצד שמאל בלבד (דהיינו תתעלם מצד ימין), ואז תוסיף את ה"תמיכה" בצד ימין.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.