ex4a


לולאות for

4א.1 דגלים בחוף הים

link

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

קלט

התוכנית תקלוט 30 שורות. כל שורה תכיל מחרוזת אחת המייצגת את צבע הדגל:

  1. “WHITE” - דגל לבן
  2. “RED” - דגל אדום
  3. “BLACK” - דגל שחור

פלט

  1. עבור כל אחד מ-30 הימים, התוכנית תדפיס שורה בפורמט:Day X: Y כאשר X הוא מספר היום (מ-1 עד 30) ו-Y הוא צבע הדגל שהוזן (WHITE, RED, BLACK).
  2. בסיום קליטת כל 30 הימים, התוכנית תדפיס שורה אחת נוספת המציינת את סך הימים שבהם הדגל היה שחור (כלומר, אסור היה להיכנס למים):Total days with BLACK flag: Z כאשר Z הוא סך הימים שבהם הדגל היה שחור.

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

  1. הדגלים WHITE ו-RED מאפשרים כניסה למים.
  2. הדגל BLACK אוסר כניסה למים.
  3. יש להקפיד על פורמט הפלט המדויק, כולל רווחים ונקודותיים.

4א.2 דו”ח טכנאי תיקונים

link

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

  1. קלט נתונים: עבור כל אחד מ-286 הטכנאים, התוכנית תקלוט את שמו (מחרוזת) ואת מספר התיקונים שביצע באותו יום (מספר שלם).
  2. זיהוי בונוס: אם טכנאי ביצע יותר מ-25 תיקונים באותו יום, התוכנית תדפיס את שמו ואת ההודעה “BONUS”. כל טכנאי זכאי לבונוס יודפס בשורה נפרדת.
  3. חישוב סך התיקונים: התוכנית תחשב את סך כל התיקונים שנעשו על ידי כל הטכנאים בחברה באותו יום.
  4. הדפסת סיכום: בסיום קליטת הנתונים מכל הטכנאים, התוכנית תדפיס את סך כל התיקונים שבוצעו בפורמט: “Total repairs: XXXX”.

קלט

286 זוגות של קלט, כל זוג בשתי שורות נפרדות:

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

פלט

  1. עבור כל טכנאי שביצע יותר מ-25 תיקונים: “[שם הטכנאי] BONUS” (כל אחד בשורה נפרדת).
  2. בסוף הפלט, שורה אחת המציגה את סך כל התיקונים: “Total repairs: [סך התיקונים]”.

4א.3 הכנסות רשות הטבע והגנים

link

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

  1. חיזיון אור-קולי במחיר 10 ש”ח לכרטיס
  2. נסיעה ברכבל במחיר 15 ש”ח לכרטיס

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

הקוד צריך לחשב ולהדפיס:

  1. את הסכום לתשלום עבור רכישת הכרטיסים לכל משפחה
  2. את סכום הכסף הכולל שנאסף מכל 400 המשפחות

קלט

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

פלט

עבור כל משפחה, התוכנית תדפיס את סכום התשלום שלה בפורמט: Family total: X. לאחר מכן, התוכנית תדפיס את הסכום הכולל שנאסף מכל 400 המשפחות בפורמט: Total collected: Y.

4א.4 השוואת ציוני תלמידים

link

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

כתבו תוכנית אשר קולטת עבור כל אחד מ-315 התלמידים את ציונו במקצוע במחצית א’ ואת ציונו במקצוע במחצית ב’.

התוכנית תבצע את המשימות הבאות:

  1. תמנה ותדפיס את כמות התלמידים ששיפרו את הישגיהם (כלומר, הציון במחצית ב’ גבוה מהציון במחצית א’).
  2. תחשב את ממוצע הציונים של התלמידים בסוף כל מחצית. יש להדפיס את הממוצעים עם שתי ספרות אחרי הנקודה העשרונית.
  3. תדפיס הודעה אם התוכנית החדשה הצליחה. הצלחה תיחשב אם ממוצע ציוני מחצית ב’ גדול מממוצע ציוני מחצית א’ ב-10 נקודות לפחות.

קלט

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

פלט

  1. שורה ראשונה: Students who improved: X (כאשר X הוא מספר התלמידים ששיפרו את הישגיהם).
  2. שורה שנייה: Average score semester A: XX.YY (כאשר XX.YY הוא ממוצע ציוני מחצית א’ עם שתי ספרות אחרי הנקודה).
  3. שורה שלישית: Average score semester B: ZZ.WW (כאשר ZZ.WW הוא ממוצע ציוני מחצית ב’ עם שתי ספרות אחרי הנקודה).
  4. שורה רביעית: New program successful! אם ממוצע ציוני מחצית ב’ גדול מממוצע ציוני מחצית א’ ב-10 נקודות לפחות. אחרת, New program not successful.

דוגמאות מפורטות לטיפול במקרים שונים:

  1. שיפור הישגים: אם ציון מחצית ב’ הוא 85 וציון מחצית א’ הוא 80, התלמיד נחשב כמי ששיפר את הישגיו.
  2. ללא שינוי או ירידה: אם ציון מחצית ב’ הוא 80 וציון מחצית א’ הוא 80, או ציון מחצית ב’ הוא 75 וציון מחצית א’ הוא 80, התלמיד לא נחשב כמי ששיפר את הישגיו.
  3. חישוב ממוצעים: יש לחשב את סכום כל הציונים במחצית א’ ולחלק ב-315. כך גם עבור מחצית ב’.
  4. הצלחת התוכנית: לדוגמה, אם ממוצע מחצית א’ הוא 70 וממוצע מחצית ב’ הוא 80, התוכנית לא נחשבת מוצלחת (ההפרש הוא 10, לא גדול מ-10). אם ממוצע מחצית ב’ הוא 80.01, התוכנית נחשבת מוצלחת.
  5. פורמט פלט: יש להקפיד על הפורמט המדויק של ההודעות, כולל רווחים ונקודות עשרוניות.

4א.5 חישוב עלות הזמנות בקבוקים

link

חברה משווקת בקבוקי משקה במחיר 35 שקלים לארגז. בעבור הזמנה שיש בה פחות מ-4 ארגזים של בקבוקי משקה, הלקוח ישלם 10 שקלים דמי משלוח.

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

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

קלט

התוכנית תקלוט 4,790 זוגות של קלט. עבור כל זוג:

  1. שם הלקוח (מחרוזת).
  2. מספר ארגזי הבקבוקים שהוזמנו (מספר שלם).

פלט

עבור כל לקוח, התוכנית תדפיס שורה בפורמט:[Customer Name]: [Total Amount]

בסיום עיבוד כל הלקוחות, התוכנית תדפיס שורה אחת נוספת בפורמט:Customers who ordered more than 20 cases: [Count]

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

  1. מחיר לארגז: 35 שקלים.
  2. דמי משלוח: 10 שקלים עבור הזמנות של פחות מ-4 ארגזים.
  3. יש לספור לקוחות שהזמינו יותר מ-20 ארגזים (לא כולל 20).

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

  1. הזמנה של 0 ארגזים: אם לקוח מזמין 0 ארגזים, עלות ההזמנה היא 0 שקלים + 10 שקלים דמי משלוח (כי 0 קטן מ-4). סך הכל 10 שקלים.
  2. הזמנה של 3 ארגזים: עלות ההזמנה תכלול דמי משלוח.
  3. הזמנה של 4 ארגזים: עלות ההזמנה לא תכלול דמי משלוח.
  4. הזמנה של 20 ארגזים: לקוח זה לא ייכלל בספירת הלקוחות שהזמינו ‘יותר מ-20 ארגזים’.
  5. הזמנה של 21 ארגזים: לקוח זה ייכלל בספירת הלקוחות שהזמינו ‘יותר מ-20 ארגזים’.

4א.6 חישוב ציוני תלמידים

link

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

  1. המורה מחשב את ממוצע הציונים של התלמיד בשלוש העבודות.
  2. אם הציון של התלמיד בעבודה השלישית גבוה מ-85, המורה מוסיף 5 נקודות לציון הממוצע שחושב בשלב הראשון.
  3. אם הציון שהתקבל לאחר ההוספה גבוה מ-100, התלמיד מקבל 100 כציון סופי במחצית.

כתבו תוכנית שתבצע את הפעולות הבאות:

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

הערה: הנח כי הקלט תקין.

קלט

ע עבור כל אחד מ-30 התלמידים:

  1. שם התלמיד (מחרוזת)
  2. ציון עבודה 1 (מספר שלם)
  3. ציון עבודה 2 (מספר שלם)
  4. ציון עבודה 3 (מספר שלם)

פלט

עבור כל אחד מ-30 התלמידים:[Student Name]: [Final Grade]

ובסוף התוכנית:Students with 100: [Count]

דוגמאות לחישוב ציון סופי

מקרה 1: ציון עבודה 3 גבוה מ-85, ציון סופי מעל 100

  1. שם: StudentA, ציונים: 90, 90, 90
  2. ממוצע: (90+90+90)/3 = 90
  3. ציון עבודה 3 (90) > 85, לכן מוסיפים 5 נקודות: 90 + 5 = 95
  4. 95 אינו גבוה מ-100, ציון סופי: 95

מקרה 2: ציון עבודה 3 גבוה מ-85, ציון סופי נחתך ל-100

  1. שם: StudentB, ציונים: 95, 95, 95
  2. ממוצע: (95+95+95)/3 = 95
  3. ציון עבודה 3 (95) > 85, לכן מוסיפים 5 נקודות: 95 + 5 = 100
  4. 100 אינו גבוה מ-100, ציון סופי: 100

מקרה 3: ציון עבודה 3 גבוה מ-85, ציון סופי נחתך ל-100 (מקרה נוסף)

  1. שם: StudentC, ציונים: 98, 97, 96
  2. ממוצע: (98+97+96)/3 = 97
  3. ציון עבודה 3 (96) > 85, לכן מוסיפים 5 נקודות: 97 + 5 = 102
  4. 102 גבוה מ-100, לכן ציון סופי: 100

מקרה 4: ציון עבודה 3 אינו גבוה מ-85

  1. שם: StudentD, ציונים: 80, 85, 80
  2. ממוצע: (80+85+80)/3 = 81.66 (יש לעגל למספר שלם קרוב ביותר, או להשאיר עשרוני לפי הנחיית המרצה)
  3. ציון עבודה 3 (80) אינו גבוה מ-85, לכן לא מוסיפים נקודות.
  4. ציון סופי: 81 (או 81.66)

4א.7 ניטור זיהום אוויר

link

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

עליכם לכתוב תוכנית שתבצע את הפעולות הבאות:

  1. תקלוט את רמת הזיהום המותרת (מספר שלם חיובי).
  2. תקלוט שתי מדידות זיהום (מספרים שלמים חיוביים) עבור כל אחד מ-30 הימים הבאים.
  3. עבור כל יום, התוכנית תמצא את המדידה הגבוהה ביותר מבין שתי המדידות שנקלטו (אם המדידות שוות, יש לקחת אחת מהן).
  4. התוכנית תדפיס עבור כל יום את המספר הסידורי שלו ואת המדידה הגבוהה ביותר שנמצאה בו.
  5. אם המדידה הגבוהה ביותר שנמצאה גבוהה מהרמה המותרת, התוכנית תדפיס הודעה מתאימה “- Exceeded allowed level!” באותה שורה.

קלט

  1. שורה ראשונה: רמת הזיהום המותרת (מספר שלם חיובי).
  2. 30 זוגות של שורות: בכל זוג שורות, שתי מדידות זיהום עבור יום מסוים (מספרים שלמים חיוביים).

פלט

30 שורות, כל אחת בפורמט הבא:Day X: Y אוDay X: Y - Exceeded allowed level!

כאשר X הוא מספר היום (מ-1 עד 30) ו-Y הוא המדידה הגבוהה ביותר שנמצאה באותו יום.

4א.8 עיבוד נתוני תלמידים

link

בבית ספר תיכון “המצטיינים” כל התלמידים לומדים מדעי המחשב. עליכם לכתוב תוכנית שתבצע את הפעולות הבאות עבור 975 תלמידים:

קלט נתונים: עבור כל תלמיד, התוכנית תקלוט:

  1. שם התלמיד (מחרוזת).
  2. מספר יחידות הלימוד במדעי המחשב (מספר שלם).
  3. ציון במדעי המחשב (מספר שלם).

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

  1. פורמט הפלט: Student Name: [Name], Units: [Units], Grade: [Grade]

ציון הצטיינות: אם הציון של התלמיד במדעי המחשב גבוה מ-95, התוכנית תדפיס גם את האות “A” בסוף שורת הפלט של התלמיד.

  1. פורמט הפלט במקרה זה: Student Name: [Name], Units: [Units], Grade: [Grade] A

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

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

  1. פורמט הפלט: Number of students with 5 units: [Count]

קלט

הקלט יכלול 975 סטים של נתונים, כל סט מורכב משלוש שורות:

  1. שם התלמיד (מחרוזת).
  2. מספר יחידות הלימוד במדעי המחשב (מספר שלם).
  3. ציון במדעי המחשב (מספר שלם).

פלט

  1. 975 שורות, כל אחת בפורמט Student Name: [Name], Units: [Units], Grade: [Grade] או Student Name: [Name], Units: [Units], Grade: [Grade] A.
  2. שורה אחת בסיום המכילה את סך התלמידים עם 5 יחידות לימוד: Number of students with 5 units: [Count]

דוגמאות מפורטות:

  1. קלט: Student1 5 98פלט: Student Name: Student1, Units: 5, Grade: 98 A
  2. קלט: Student2 3 95פלט: Student Name: Student2, Units: 3, Grade: 95
  3. קלט: Student3 5 90פלט: Student Name: Student3, Units: 5, Grade: 90

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

4א.9 שביל ישראל

link

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

  1. תקלוט עבור כל אחד מ-44 הקטעים את שמו (מחרוזת) ואת אורכו (מספר עשרוני).
  2. תדפיס את שמות הקטעים שאורכם גדול מ-10 ק”מ. כל שם יודפס בשורה נפרדת.
  3. תחשב את אורכו הכולל של שביל ישראל (סכום אורכי כל 44 הקטעים).
  4. תדפיס את האורך הכולל של השביל בפורמט: Total trail length: X.X km.

קלט

התוכנית תקלוט 44 זוגות של קלט. כל זוג יכלול:

  1. שם הקטע (מחרוזת).
  2. אורך הקטע (מספר עשרוני).

פלט

  1. שמות הקטעים שאורכם גדול מ-10 ק”מ, כל אחד בשורה נפרדת.
  2. שורה אחת המציגה את האורך הכולל של השביל בפורמט: Total trail length: X.X km.

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

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

4א.10 תחרות איסוף למיחזור

link

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

  1. עבור בקבוק פלסטיק – 3 נקודות
  2. עבור סוללה – 7 נקודות

עליכם לכתוב תוכנית שתקלוט עבור כל אחד מ-68 התלמידים את הנתונים הבאים:

  1. מספר הכיתה שלו (1 או 2).
  2. מספר בקבוקי הפלסטיק שאסף.
  3. מספר הסוללות שאסף.

(אם התלמיד לא הביא פריט מאחד הסוגים, ייקלט 0 עבור אותו סוג).

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

קלט

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

  1. Class number (1 or 2)
  2. Number of plastic bottles (integer >= 0)
  3. Number of batteries (integer >= 0)

פלט

הפלט יהיה מחרוזת אחת:

  1. The winning class number (1 or 2) if one class has more points.
  2. “TEKO” if both classes have the same number of points.