5 תשובות
אל תסתבכי
תעשי משתנה של pos שמצביע על תחילת הרשימה ואיתו תספרי את אורך הרשימה במשתנה count
אחרי זה תגדירי משתנה sum ששווה 0
ותעשי לולאת פור עד האורך count/2
ובו תחברי את האיברים לsum ותקדמי את lst תוך כדי
אחרי זה תעשי לולאת while עד שהשרשרת ריקה
ותעשי חיסור של האיבר הנוכחי מהסכום ותקדמי את lst
ובסוף תחזירי sum==0
כי אם הסכום של הראשון שווה לשני אז החיסור ביניהם יתן 0
תעשי משתנה של pos שמצביע על תחילת הרשימה ואיתו תספרי את אורך הרשימה במשתנה count
אחרי זה תגדירי משתנה sum ששווה 0
ותעשי לולאת פור עד האורך count/2
ובו תחברי את האיברים לsum ותקדמי את lst תוך כדי
אחרי זה תעשי לולאת while עד שהשרשרת ריקה
ותעשי חיסור של האיבר הנוכחי מהסכום ותקדמי את lst
ובסוף תחזירי sum==0
כי אם הסכום של הראשון שווה לשני אז החיסור ביניהם יתן 0
יש פה כמה דברים שלא מסתדרים לי..
(רושם)
(רושם)
א) את איבדת את האיבר הראשון כבר בלולאה הראשונה, אז לא תוכלי לרוץ על הרשימה שוב.
ב) בלולאה הראשונה התנאי הבוליאני בתוך הif תמיד יהיה נכון אז אין טעם לבדוק אותו, אם מספר לא קטן מ0 הוא יהיה גדול שווה 0.
ג) בלולאה השנייה את רוצה לרוץ מהאיבר הראשון עד החצי, אבל את בודקת אם קאונט שווה לfirsthalf וזה בחיים לא יקרה אם הרשימה לא באורך 0.
את רוצה לרוץ בלולאה הזו כל עוד קאונט קטן מfirsthalf (כמובן שאת צריכה לא לאבד את האיבר הראשון בשביל זה).
ד) בלולאה השלישית את יכולה פשוט להמשיך לרוץ בלולאה מאיפה שסיימת את הלולאה (או שמהנקסט שלו, לא בטוח) השנייה כי זה כבר החצי השני(כאילו כל עוד האיבר הנוכחי לא null). אין צורך למשתנה ששומר את כמות האיברים בחצי השני כי זה יהיה אותו הדבר כמו בחלק הראשון כי גודל הרשימה זוגי ואנחנו לא באמת צריכים את זה
ב) בלולאה הראשונה התנאי הבוליאני בתוך הif תמיד יהיה נכון אז אין טעם לבדוק אותו, אם מספר לא קטן מ0 הוא יהיה גדול שווה 0.
ג) בלולאה השנייה את רוצה לרוץ מהאיבר הראשון עד החצי, אבל את בודקת אם קאונט שווה לfirsthalf וזה בחיים לא יקרה אם הרשימה לא באורך 0.
את רוצה לרוץ בלולאה הזו כל עוד קאונט קטן מfirsthalf (כמובן שאת צריכה לא לאבד את האיבר הראשון בשביל זה).
ד) בלולאה השלישית את יכולה פשוט להמשיך לרוץ בלולאה מאיפה שסיימת את הלולאה (או שמהנקסט שלו, לא בטוח) השנייה כי זה כבר החצי השני(כאילו כל עוד האיבר הנוכחי לא null). אין צורך למשתנה ששומר את כמות האיברים בחצי השני כי זה יהיה אותו הדבר כמו בחלק הראשון כי גודל הרשימה זוגי ואנחנו לא באמת צריכים את זה
אנונימי
אחד מהם הוא שקידמת את המצביע ברשימה המקורית ואז ניסיצת לרוץ עליה שוב, היית צריכה ליצור מצביע אחר ולרוץ עליו,
את לא צריכה שני משתנים לחצאים, מספיק רק אחד
התנאי שלך בלולאת while השנייה לא נכון כשנכנסים ללולאה, כך שאת לא רצה בכלל על הלולאה, חצי הרשימה לא שווה למספר האיברים בא, השוויון הזה לא מתקיים ולכן הלולאה לא רצה, היית צריכה לאפס את count ולהוסיף לו אחד אחרי כל ריצה אם את רוצה לספור חצי כביכול
גם בלולאה השנייה את צריכה לרוץ עם מצביע אחר של הרשימה
את לא צריכה שני משתנים לחצאים, מספיק רק אחד
התנאי שלך בלולאת while השנייה לא נכון כשנכנסים ללולאה, כך שאת לא רצה בכלל על הלולאה, חצי הרשימה לא שווה למספר האיברים בא, השוויון הזה לא מתקיים ולכן הלולאה לא רצה, היית צריכה לאפס את count ולהוסיף לו אחד אחרי כל ריצה אם את רוצה לספור חצי כביכול
גם בלולאה השנייה את צריכה לרוץ עם מצביע אחר של הרשימה
והתנאי שלך בif תמיד ייה נכון כפי שאמרו
באותו הנושא: