ex6a


לולאות while שאלות סיכום

6א.1 בדיקת ספרות כפולות

link

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

שימו לב! הספרות אינן חייבות להיות בהכרח סמוכות. לדוגמה, המספר 1231 מכיל את הספרה 1 פעמיים, למרות שהן לא סמוכות.

קלט

מספר שלם חיובי אחד.

פלט

  1. אם קיימת ספרה המופיעה פעמיים או יותר, הפלט יהיה: Contains duplicate digits
  2. אם אין ספרה המופיעה פעמיים או יותר, הפלט יהיה: Does not contain duplicate digits

6א.2 גורמים ראשוניים

link

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

קלט

מספר שלם חיובי אחד (מספר טבעי).

פלט

רשימה של הגורמים הראשוניים של המספר, מופרדים בפסיק ורווח. לדוגמה: 2, 2, 3, 5.

דרישות נוספות

  1. יש להדפיס את הגורמים בסדר עולה.
  2. אם המספר הוא 1, הפלט צריך להיות ריק (או שורה ריקה).
  3. אם המספר הוא מספר ראשוני, יש להדפיס את המספר עצמו.

6א.3 היפוך מספר ומכפלה

link

עליכם לכתוב תוכנית שקולטת מספר טבעי מהמשתמש. התוכנית צריכה לבצע את הפעולות הבאות:

  1. קליטת קלט: קלטו מספר טבעי (מספר שלם וחיובי) מהמשתמש.
  2. היפוך מספר: חשבו את המספר החדש שנוצר על ידי היפוך סדר הספרות של המספר המקורי.
  3. חישוב מכפלה: חשבו את המכפלה של המספר המקורי במספר ההפוך.
  4. הדפסת פלט: הדפיסו את המספר ההפוך ואת תוצאת המכפלה.

קלט

מספר שלם טבעי אחד (לדוגמה: 2538).

פלט

שתי שורות פלט:

  1. המספר ההפוך בפורמט: Reversed number: [מספר הפוך]
  2. מכפלת המספר המקורי והמספר ההפוך בפורמט: Product: [תוצאת מכפלה]

6א.4 זוגות ספרות סמוכות זהות

link

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

לדוגמה:

  1. עבור המספר 1332, התוכנית צריכה להדפיס שהמספר מכיל זוג ספרות סמוכות זהות (הספרה ‘3’ מופיעה פעמיים ברצף).
  2. עבור המספר 1234, התוכנית צריכה להדפיס שהמספר אינו מכיל זוג ספרות סמוכות זהות.

קלט

מספר שלם חיובי.

פלט

  1. The number contains identical adjacent digits. - אם נמצא זוג ספרות סמוכות זהות.
  2. The number does not contain identical adjacent digits. - אם לא נמצא זוג ספרות סמוכות זהות.

הנחיות נוספות

  1. המספר הקלוט יהיה תמיד מספר שלם חיובי.
  2. התוכנית צריכה לטפל במספרים בעלי ספרה אחת.
  3. התוכנית צריכה לטפל במספרים בעלי שתי ספרות או יותר.

6א.5 ניחוש מספר

link

עליכם לכתוב תוכנית המדמה משחק ניחוש מספרים בין מחשב למשתמש. המחשב ינסה לנחש מספר שהמשתמש בחר (בין 1 ל-100), והמשתמש יספק רמזים.

מהלך המשחק:

  1. המשתמש בוחר מספר סודי בין 1 ל-100 (התוכנית לא קולטת את המספר הזה ישירות).
  2. המחשב מנחש מספר כלשהו (לדוגמה, מתחיל מ-50).
  3. המחשב מדפיס את הניחוש שלו בפורמט: Is your number X?
  4. המשתמש מגיב לאחת משלוש אפשרויות:
  5. Big - אם המספר הסודי גדול מהניחוש של המחשב.
  6. Small - אם המספר הסודי קטן מהניחוש של המחשב.
  7. Bingo - אם המספר הסודי שווה לניחוש של המחשב.
  8. המשחק ממשיך בלולאה עד שהמשתמש מגיב ב-Bingo.
  9. כאשר המשתמש מגיב ב-Bingo, התוכנית צריכה להדפיס: Bingo! I guessed your number. ולסיים את פעולתה.

קלט

הקלט הוא מחרוזת אחת בכל שורה: Big, Small, או Bingo.

פלט

  1. Is your number X? - כאשר X הוא הניחוש הנוכחי של המחשב.
  2. Bingo! I guessed your number. - כאשר המחשב ניחש נכונה והמשחק הסתיים.

הנחיות נוספות:

  1. השתמשו בחיפוש בינארי (או דומה לו) כדי לצמצם את טווח הניחושים של המחשב. התחילו עם טווח של 1-100, וצמצמו אותו בהתאם לתגובת המשתמש.
  2. הניחוש הראשון של המחשב צריך להיות 50.
  3. אם המשתמש מגיב Big, טווח החיפוש הבא צריך להיות בין הניחוש הנוכחי ל-100. הניחוש הבא יהיה באמצע הטווח החדש.
  4. אם המשתמש מגיב Small, טווח החיפוש הבא צריך להיות בין 1 לניחוש הנוכחי. הניחוש הבא יהיה באמצע הטווח החדש.

6א.6 ניחוש מספר2

link

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

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

  1. אם המשתמש ניחש את המספר בפחות מ-5 ניסיונות (כולל 5), הוא זוכה ב-100 ש”ח.
  2. אם המשתמש ניחש את המספר ב-6 עד 10 ניסיונות (כולל 10), הוא זוכה ב-50 ש”ח.
  3. אם המשתמש ניחש את המספר ביותר מ-10 ניסיונות, הוא מפסיד.

קלט

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

פלט

  1. לאחר כל ניחוש שגוי: ‘Too high’ אם הניחוש גבוה מהמספר הסודי, או ‘Too low’ אם הניחוש נמוך מהמספר הסודי.
  2. כאשר הניחוש נכון: ‘You guessed the number in X attempts!’ כאשר X הוא מספר הניסיונות.
  3. לאחר מכן, אחת מההודעות הבאות:
  4. ‘Congratulations! You won 100 NIS!’ (אם ניחש בפחות מ-5 ניסיונות)
  5. ‘Congratulations! You won 50 NIS!’ (אם ניחש ב-6 עד 10 ניסיונות)
  6. ‘You lost. Better luck next time!’ (אם ניחש ביותר מ-10 ניסיונות)

הנחיות נוספות:

  1. השתמשו ב-Random עם seed קבוע (לדוגמה, new Random(123)) כדי להבטיח שהמספר האקראי יהיה זהה בכל הרצה של הבדיקות, מה שיאפשר בדיקות עקביות.
  2. המספר הסודי יהיה תמיד בין 1 ל-100 (כולל).
  3. מספר הניסיונות כולל את הניחוש הנכון.

6א.7 סטטיסטיקת ציוני תלמידים

link

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

  1. מספר התלמידים.
  2. הממוצע של כל ציוני התלמידים (שתי ספרות אחרי הנקודה העשרונית).
  3. מספר התלמידים שקיבלו ציון 90 ומעלה.
  4. מספר התלמידים שנכשלו (ציון נמוך מ-60).

קלט

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

פלט

הפלט צריך להיות בפורמט הבא, כל שורה בנפרד:

  1. Number of students: X
  2. Average grade: Y.YY
  3. Number of students with grade 90 or above: Z
  4. Number of students who failed: W

טיפול במקרי קצה

  1. אם לא הוזנו ציונים כלל (הוזן 999 מיד), יש להדפיס:Number of students: 0Average grade: 0.00Number of students with grade 90 or above: 0Number of students who failed: 0
  2. אם יש רק תלמיד אחד, החישובים צריכים להיות נכונים עבורו.
  3. הציון 999 אינו נכלל בחישובים.
  4. יש לעגל את הממוצע לשתי ספרות אחרי הנקודה העשרונית.

6א.8 צמצום שברים

link

עליכם לכתוב תוכנית שקולטת שני מספרים שלמים מהמשתמש: מונה (numerator) ומכנה (denominator). התוכנית צריכה לצמצם את השבר המיוצג על ידי המונה והמכנה לצורתו הפשוטה ביותר, ולהדפיס את השבר המצומצם.

קלט

שני מספרים שלמים, כל אחד בשורה נפרדת:

  1. מונה
  2. מכנה

פלט

השבר המצומצם בפורמט “numerator/denominator”.

דרישות נוספות:

  1. יש להניח שהמכנה תמיד יהיה מספר חיובי.
  2. אם המונה הוא 0, השבר המצומצם יהיה 0/1.
  3. אם המכנה הוא 1, יש להדפיס את השבר כ- X/1 (לדוגמה, 5/1).

6א.9 תלמיד גבוה ונמוך ביותר

link

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

קלט

הקלט יורכב מזוגות של שורה המכילה שם תלמיד (מחרוזת) ושורה המכילה גובה תלמיד (מספר עשרוני). הקלט יסתיים כאשר השם ‘stop’ יוזן. כאשר ‘stop’ מוזן, אין לקלוט גובה עבורו.

פלט

התוכנית תדפיס שתי שורות:

  1. השורה הראשונה תכיל את שם התלמיד הגבוה ביותר ואת גובהו בפורמט: Tallest student: [Name], Height: [Height]
  2. השורה השנייה תכיל את שם התלמיד הנמוך ביותר ואת גובהו בפורמט: Shortest student: [Name], Height: [Height]

הנחיות וטיפול במקרים שונים

  1. קלט ראשון ‘stop’: אם המשתמש מזין ‘stop’ כשם התלמיד הראשון, התוכנית צריכה להדפיס: No students entered.
  2. תלמיד בודד: אם הוזן רק תלמיד אחד לפני ‘stop’, התוכנית תדפיס את שמו וגובהו גם כתלמיד הגבוה ביותר וגם כתלמיד הנמוך ביותר.
  3. גבהים זהים: אם ישנם מספר תלמידים עם אותו גובה מקסימלי או מינימלי, ניתן להדפיס את הפרטים של אחד מהם (לדוגמה, הראשון שנמצא).
  4. פורמט גובה: הגובה יכול להיות מספר שלם או עשרוני. יש להדפיס אותו כפי שנקלט.
  5. השוואת גבהים: השתמשו בהשוואות מספריות כדי למצוא את הגובה המקסימלי והמינימלי.