עבור לתוכן

צריך עזרה בנוגע לפיתרון בעיה מסוימת [פסקל]

Featured Replies

פורסם

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

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

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

למישהו יש רעיון?

תודה מראש 8)

פורסם

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

פורסם
  • מחבר

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

פורסם

למה סיפור ? יש דווקא דרכים הרבה יותר מתוסבכות :)

פורסם
  • מחבר

מה אתה  חושב על הרעיון הבא: הולכים לתא הראשון במערכת, מוצאים מה המקצוע בו, סופרים אחד (באיזשהו משתנה מונה). עוברים על כל המערכת ושמים בכל מקום שיש את המקצוע הזה X. אח"כ עוברים לתא השני, בודקים אם הוא שונה מ-X..אם כן סופרים במונה אותו, ושוב שמים בכל המקומות  במערכת שיש אותו X...ככה עד שעוברים על הכל.

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

פורסם

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

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

פורסם
  • מחבר

צודק :-\ ....אז אני חושב שאני יעשה את הפתרון שהצעת בכל זאת.

תודה :)

פורסם

לא הבנתי. אתה רוצה לספור כמה מקצועות יש לך במערכת?

נגיד אנגלית, תנך, מתמטיקה אז התוכנית תציג 3 (כמספר המקצועות)?

או לספור את מספר השעות הכוללות במערכת (שבשביל זה לא צריך סריקה, אם יש לך 9 שעות ב5 ימים).

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

פורסם
  • מחבר

לא הבנתי. אתה רוצה לספור כמה מקצועות יש לך במערכת?

נגיד אנגלית, תנך, מתמטיקה אז התוכנית תציג 3 (כמספר המקצועות)?

או לספור את מספר השעות הכוללות במערכת (שבשביל זה לא צריך סריקה, אם יש לך 9 שעות ב5 ימים).

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

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

פורסם

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

כמובן שאין צורך ליצור מערך חד מימדי בגודל של 45 תאים (9*5), אני לא מאמין שמערכת שעות כל יום

יש לך שעה של מקצוע שונה.

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

כמובן שיכול להיות לך עודף זיכרון ויכול להיות לך חסר זיכרון. (לא נראה לי שמסגרת חינוכית מלמדת 15 מקצועות

שונים בשבוע).

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

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

ארכיון

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

דיונים חדשים