Menu
Coddy logo textTech

סיכום: עיבוד נתונים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 45 מתוך 68.

challenge icon

אתגר

קל

יתקבלו שלושה קלטים: רשימה של שמות עובדים המופרדים בפסיקים, רשימה של שעות העבודה המתאימות להם במהלך השבוע, המופרדות בפסיקים, וסף מינימלי של שעות. הקלט הראשון מכיל שמות בפורמט Alice,Bob,Charlie,Diana,Eve, הקלט השני מכיל שעות כמספרים בפורמט 45,32,50,28,40, והקלט השלישי הוא סף מינימלי של שעות כמספר (לדוגמה: 35).

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

  1. השתמשו ב-array_filter() עם פונקציית callback מותאמת אישית כדי להשאיר רק את העובדים שעבדו לפחות את סף השעות המינימלי
  2. השתמשו ב-array_map() עם פונקציית callback מותאמת אישית כדי לחשב את תשלום השעות הנוספות לעובדים המסוננים (שעות נוספות הן כל שעה מעבר ל-40, ומשולמות לפי תעריף של פי 1.5 מתעריף של $25 לשעה עבור שעות רגילות)
  3. השתמשו ב-array_reduce() עם פונקציית callback מותאמת אישית כדי לחשב את סך התשלום עבור שעות נוספות לכל העובדים המסוננים

הדפיסו את התוצאות בפורמט הבא:

  • תחילה, הדפיסו את שמו של כל עובד שעומד בדרישות ואת התשלום שלו עבור שעות נוספות, כל אחד בשורה נפרדת, בפורמט Name: $Amount (מעוגל ל-2 ספרות אחרי הנקודה העשרונית)
  • לבסוף, הדפיסו את סך התשלום עבור שעות נוספות בפורמט Total: $Amount (מעוגל ל-2 ספרות אחרי הנקודה העשרונית)

פרטי החישוב:

  • שעות רגילות (עד 40): $25 לשעה
  • שעות נוספות (מעבר ל-40): $37.50 לשעה (תעריף של פי 1.5)
  • אם עובד עבד 40 שעות או פחות, התשלום שלו עבור שעות נוספות הוא $0.00

פורמט הקלט:

  • השורה הראשונה: שמות עובדים המופרדים בפסיקים (לדוגמה: Alice,Bob,Charlie,Diana,Eve)
  • השורה השנייה: שעות עבודה כמספרים, המופרדות בפסיקים (לדוגמה: 45,32,50,28,40)
  • השורה השלישית: סף מינימלי של שעות כמספר (לדוגמה: 35)

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

נסו בעצמכם

<?php
// קראו את הקלטים
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));

// המירו את השעות למספרים שלמים
$hours = array_map('intval', $hours);

// צרו מערך אסוציאטיבי המשלב שמות ושעות
$employees = array_combine($names, $hours);

// TODO: כתבו את הקוד שלכם למטה
// 1. השתמשו ב-array_filter() כדי להשאיר עובדים שעבדו לפחות את מספר השעות המינימלי
// 2. השתמשו ב-array_map() כדי לחשב את התשלום על שעות נוספות לעובדים שסוננו
// 3. השתמשו ב-array_reduce() כדי לחשב את סך התשלום על שעות נוספות

// הציגו את התוצאות
// הדפיסו את התשלום על שעות נוספות של כל עובד שעומד בתנאים
// הדפיסו את סך התשלום על שעות נוספות

?>

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר PHP אונליין