הנחיות כלליות
- בכל השאלות סעיף א׳ הוא פעולת עזר שמקבלת פרמטר/ים ומחזירה ערך (בלי קלט ובלי פלט).
- בכל שאלה שיש בה סעיף ב׳ – סעיף ב׳ הוא פעולה ראשית (תכנית) שמדפיסה/מציגה תוצאות ומבצעת קריאות לפעולה מסעיף א׳.
- אסור להשתמש במחרוזות (
string) לפתרון של שאלות העוסקות בספרות של מספרים. יש להשתמש רק בחילוק שלם, שארית חלוקה, כפל, חיבור, חיסור ולולאות. - מתוך השאלה – עליכם/ן לזהות לבד את החתימה המתאימה: טיפוס החזרה, שם הפונקציה, פרמטרים.
- בכל שאלה הניסוח הוא: *כתבו פעולה בשם
המקבלת טיפוס שלם `num` ומחזירה...* (אם יש פרמטרים נוספים הם יופיעו במפורש).
שאלה 9 (1/5) – מספר “משולש” (קל) (bool, ללא לולאות חובה)
כתבו פעולה בשם CanFormTriangle המקבלת שלושה מספרים שלמים חיוביים (אורכים) ומחזירה true אם ניתן ליצור מהם משולש, אחרת false.
הבהרה: אפשר ליצור משולש אם מתקיים:
a + b > ca + c > bb + c > a
שאלה 1 (2/5) – היפוך ספרות רק אם מספר הספרות זוגי (while)
Related (not duplicate): 7.3.12 SwitchDigits (swap adjacent pairs)
- כתבו פעולה בשם
FlipIfEvenLengthהמקבלת מספר שלם חיוביnumומחזירה מספר שלם:- אם מספר הספרות של
numאי־זוגי – החזירו אתnumללא שינוי. - אם מספר הספרות של
numזוגי – החזירו מספר חדש שהוא היפוך הספרות שלnum.
דוגמאות:
1234→432190→9123→123
- אם מספר הספרות של
- כתבו פעולה ראשית שמגרילה (באמצעות
Random) 6 מספרים בתחום 10 עד 9999 (כולל), ולכל מספר מדפיסה בשורה אחת:num -> resultכאשרresultהוא הערך שמוחזר מסעיף א׳.
שאלה 3 (2/5) – בדיקה האם מספר הוא ריבוע שלם (for)
-
כתבו פעולה בשם
IsPerfectSquareהמקבלת מספר שלם חיוביnumומחזירהtrueאםnumהוא ריבוע שלם, אחרתfalse.הערה: מותר להשתמש בלולאה כדי לבדוק
i*i == numעבור ערכים מתאימים, ואין צורך ב־Math.Sqrt. -
כתבו פעולה ראשית שמקבלת (או קובעת) מספר שלם חיובי
numומדפיסה את כל הריבועים השלמים בתחום 1 עדnum(כולל), כל אחד בשורה נפרדת. עליכם לקרוא לפעולה מסעיף א׳ לכל מספר בטווח.
שאלה 4 (2/5) – סכום ספרות של מספר, ואז בניית מספר חדש (while)
-
כתבו פעולה בשם
SumDigitsהמקבלת מספר שלם חיוביnumומחזירה את סכום ספרותיו.דוגמאות:
508→13999→27
-
כתבו פעולה בשם
RepeatSumDigitsשמקבלת מספר שלם חיוביnumומחזירה מספר שלם חדש בעל שתי ספרות כך:- הספרה הימנית היא
SumDigits(num) % 10 - הספרה השמאלית היא
(SumDigits(num) / 10)(חילוק שלם)
דוגמא:
num=508→SumDigits=13ולכן הפעולה תחזיר13num=999→27ולכן תחזיר27num=123456→21ולכן תחזיר21
(בפתרון – חייבים לקרוא ל־
SumDigitsלפחות פעם אחת.) - הספרה הימנית היא
שאלה 6 (3/5) – סכום מחלקים (while או for)
Related (not duplicate): 7.3.6 Perfect Number (uses proper divisor sums)
כתבו פעולה בשם SumProperDivisors המקבלת מספר שלם חיובי num ומחזירה את סכום כל המחלקים החיוביים של num שאינם כוללים את num עצמו.
דוגמאות:
num=1→0num=6→1+2+3 = 6num=12→1+2+3+4+6 = 16
תוכלו לבדוק כאן את החתימות שלכם
להלן סיכום מנהלתי קצר: לכל שאלה מופיעה הצהרת פונקציה (חתימה) + מילת מפתח/תיאור קצר, כדי לבחור מהר שאלות למבחן הסופי.
| שאלה | שם/ים | Function declaration (למורה) | Keyword / Theme |
|---|---|---|---|
| 1 | FlipIfEvenLength | static int FlipIfEvenLength(int num) |
reverse digits if even length |
| 1b | Main | static void Main() |
random 6 numbers, print mapping |
| 2 | CountDigitInNumber | static int CountDigitInNumber(int num, int digit) |
count digit occurrences |
| 2b | Main | static void Main() |
random (num,digit) pairs |
| 3 | IsPerfectSquare | static bool IsPerfectSquare(int num) |
perfect square check |
| 3b | Main | static void Main() |
print all squares up to num |
| 4a | SumDigits | static int SumDigits(int num) |
sum digits |
| 4b | RepeatSumDigits | static int RepeatSumDigits(int num) |
build 2-digit from digit-sum |
| 5 | IsPrime | static bool IsPrime(int num) |
prime check |
| 5b | Main | static void Main() |
count primes & max prime up to num |
| 6 | SumProperDivisors | static int SumProperDivisors(int num) |
sum of proper divisors |
| 7 | SwapAdjacentPairs | static int SwapAdjacentPairs(int num) |
swap digit pairs |
| 7b | Main | static void Main() |
random 4 numbers, print mapping |
| 8 | IsUpThenDown | static bool IsUpThenDown(int num) |
digits strictly up then strictly down |
| 8b | Main | static void Main() |
find first in range 100..num |
| 9 | CanFormTriangle | static bool CanFormTriangle(int a, int b, int c) |
triangle inequality |
| 10 | IsBoom7 | static bool IsBoom7(int num) |
divisible by 7 or contains digit 7 |
| 10b | Main | static void Main() |
7-boom printing 1..99 |
שאלות נוספות יצירתיות וקשות יותר 1.2.26
מעולה. קראתי את המבחן המצורף והבנתי היטב את רמת הבסיס והקונבנציות (פעולת עזר בלי קלט/פלט, עבודה עם ספרות בלי string, שימוש ב־while/for וכו’)
להלן 5 שאלות חדשות, עם אלמנט סיפורי ברור ועם קפיצה אמיתית ברמת החשיבה (מצבים, תנאים עדינים, מעקב לוגי, ולא רק “עוד לולאה”).
שאלה 11 (4/5) – מנגנון נעילה של כספת עתיקה (מצבים + ספרות)
במקדש עתיק נמצאה כספת שמקבלת קוד מספרי. הכספת נפתחת רק אם הקוד “מתנהג נכון” לאורך הסריקה שלו.
-
כתבו פעולה בשם
IsValidTempleCodeהמקבלת מספר שלם חיוביnum(לפחות 4 ספרות) ומחזירהtrueאם מתקיימים כל התנאים הבאים:- סכום הספרות עד הספרה האמצעית (לא כולל) קטן מסכום הספרות שאחריה
- יש בדיוק ספרה אחת שהיא מקסימלית (כלומר: אין שתי ספרות שוות למקסימום)
- המקסימום אינו ספרת הקצה (לא הראשונה ולא האחרונה)
אחרת – תחזיר
false.דוגמאות:
24193→true94213→false(המקסימום בקצה)35153→false(שתי ספרות מקסימליות)
-
כתבו פעולה ראשית שמחפשת ומדפיסה את 5 הקודים הראשונים בתחום 1000–99999 שפותחים את הכספת.
שאלה 12 (4/5) – מערכת ניטור דופק (מעבר מצב)
שעון חכם מקליט דופק לב כל שנייה כמספר שלם. רצף דופק תקין חייב לכלול שלב עלייה, שלב יציבות, ואז שלב ירידה.
-
כתבו פעולה בשם
IsPulseWaveהמקבלת מספר שלםnum(לפחות 5 ספרות), כאשר כל ספרה מייצגת מדידה עוקבת, ומחזירהtrueאם:יש לפחות:
- שתי עליות רצופות (
<) - אחריהן לפחות שתי ספרות שוות
- ואחריהן לפחות שתי ירידות רצופות (
>)
והשלבים מופיעים בסדר הזה בלבד.
דוגמאות:
234443210→true23333210→false(אין עלייה)23443210→false(שלב היציבות קצר מדי)
- שתי עליות רצופות (
-
כתבו פעולה ראשית שמקבלת מספר
numומדפיסה האם הדופק תקין או חריג.
שאלה 13 (4/5) – רובוט מיון ספרות (בניית מספר חכם)
רובוט סורק מספר ומייצר ממנו מספר חדש לפי חוקי מיון פנימיים.
-
כתבו פעולה בשם
RebuildByDigitGroupsהמקבלת מספר שלם חיוביnumומחזירה מספר חדש כך:- תחילה מופיעות כל הספרות הזוגיות, בסדר הופעתן המקורי
- אחריהן כל הספרות האי־זוגיות, אך בסדר הפוך
אין להשתמש במערכים או מחרוזות.
דוגמאות:
582931→8291352468→24681357→7531
-
כתבו פעולה ראשית שמגרילה 3 מספרים בני 6 ספרות ומדפיסה:
original -> rebuilt
שאלה 14 (4/5) – מד גובה הרים (ניתוח מקומי)
מטייל מתעד גבהים של שביל הרים. כל ספרה היא גובה יחסי.
-
כתבו פעולה בשם
CountLocalPeaksהמקבלת מספר שלםnum(לפחות 3 ספרות) ומחזירה כמה פסגות מקומיות יש בו.ספרה נחשבת פסגה מקומית אם היא גדולה משתי שכנותיה.
דוגמאות:
253627→2(5 ו־6)12321→111111→0
-
כתבו פעולה ראשית שמדפיסה את המספר הראשון בתחום 100–
numשיש בו לפחות 3 פסגות מקומיות.
שאלה 15 (5/5) – קוד שידור חייזרי (אילוץ חזק)
חייזרים משדרים קודים מספריים. קוד נחשב בר־פענוח אם הוא מקיים חוק מוזר:
-
כתבו פעולה בשם
IsAlienCodeהמקבלת מספר שלם חיוביnumומחזירהtrueאם:-
כל ספרה (מלבד הראשונה) שווה ל־ הפרש מוחלט בין שתי הספרות שלפניה
כלומר:
digit[i] == |digit[i-1] - digit[i-2]| -
דוגמאות:
5823→true(|8−5|=3 ✔)9312→false1211→true
-
-
כתבו פעולה ראשית שמדפיסה את כל הקודים בני 4 ספרות בתחום 1000–9999 שהם קודים חייזריים.