עבור לתוכן

עזרה לגבי שאלה שהייתי במבחן בPASCAL.

Featured Replies

פורסם

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

כל השעתיים הלכו לי על זה.

פורסם

לא הבנתי את השאלה.

פורסם

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

פורסם
  • מחבר

אני אנסה להסביר יותר טוב. נגיד יש לי מערך בעל 5 איברים.

מערך[1] - 5

מערך[2] - 3

מערך[3] - 5

מערך[4] - 1

מערך[5] - 2

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

פורסם

אוקי בעקרון הדרך הארוכה

ליצור מערך חד מימדי משלך ותכניס אליו את המספר הראשון

ואז תתחיל לסרוק את המערך הראשון וכל מספר שלא זהה למספר שהכנסת כבר יכנס למערך

עכשיו אתה צריך 2 סוכמים

אחד שיספור כמה שונים יש

ואחד שיספור כמה מספרים הכנסת עד עכשיו למערך השני (כדי להשתמש בו בלולאת FOR)

פורסם

בהנחה והמספרים הם מ 0 עד 9 (אחרת זה לא עובד):

1. הקצה מערך חדש, בגודל 10, להלן tmp_arr. מלא אותו באפסים בלבד.

2. עבור בלולאת FOR על המערך הנתון, A.

3. בכל מעבר, נניח A[k] = j אז תבצע arr_tmp[j] = 1.

4. סוף התוכנית תרוץ על arr_tmp ותסכום את הערכים בו.

5. הדפס את הסכום.

חבל שאלה לא קשה.

פורסם

בהנחה שבמערך A יש לך רק ערכים של INTEGER כלומר בטווח מ0 עד 32768 (או מה שזה לא יהיה), אתה מאתחל מערך B 0..32768 רץ על A ומעדכן את B בצורה

B[A[i]]++ 

ואז עובר על B וסוכם לSUM את כול התאים בB שמכילים 1, סיבוכיות זיכרון על הפנים, אבל זה מה שעולה לי בראש כרגע.

בדיוק כמו הבחור מעליי שפירסם שנייה לפני.

פורסם

למה לעזאזל סוכם

פורסם

כי ככה.

פורסם

אוקי הבנתי

פורסם

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

פורסם

להוסיף 1 עבור כול אלה ששונים מ0 ?

פורסם

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

פורסם

ואם המספר הוא 11, האלגו צריך להחזיר 1 לא 0.

פורסם

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

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

ארכיון

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

דיונים חדשים