Menu
CoddyTech

Rangkuman: Pemrosesan Data

Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 45 dari 68.

challenge icon

Tantangan

Mudah

Kamu akan menerima tiga input: daftar nama karyawan yang dipisahkan koma, daftar jam kerja mereka untuk minggu tersebut yang dipisahkan koma, dan ambang batas jam minimum. Input pertama berisi nama dalam format Alice,Bob,Charlie,Diana,Eve, input kedua berisi jam kerja sebagai angka dalam format 45,32,50,28,40, dan input ketiga adalah ambang batas jam minimum dalam bentuk angka (contoh: 35).

Baca ketiga input dan ubah menjadi array yang sesuai. Buat array asosiatif gabungan dengan nama karyawan sebagai key dan jam kerja mereka sebagai nilai. Lalu lakukan operasi berikut menggunakan fungsi array tingkat tinggi:

  1. Gunakan array_filter() dengan fungsi callback khusus untuk hanya mempertahankan karyawan yang bekerja setidaknya sebanyak ambang batas jam minimum
  2. Gunakan array_map() dengan fungsi callback khusus untuk menghitung upah lembur bagi karyawan yang telah difilter (lembur adalah jam kerja di atas 40, dibayar dengan tarif 1.5x dari tarif $25 per jam untuk jam kerja reguler)
  3. Gunakan array_reduce() dengan fungsi callback khusus untuk menghitung total upah lembur semua karyawan yang telah difilter

Cetak hasil dalam format berikut:

  • Pertama, cetak nama setiap karyawan yang memenuhi syarat dan upah lemburnya pada baris terpisah dengan format Name: $Amount (dibulatkan hingga 2 angka desimal)
  • Terakhir, cetak total upah lembur dengan format Total: $Amount (dibulatkan hingga 2 angka desimal)

Detail perhitungan:

  • Jam kerja reguler (hingga 40): $25 per jam
  • Jam lembur (di atas 40): $37.50 per jam (tarif 1.5x)
  • Jika karyawan bekerja selama 40 jam atau kurang, upah lemburnya adalah $0.00

Format input:

  • Baris pertama: Nama karyawan yang dipisahkan koma (contoh: Alice,Bob,Charlie,Diana,Eve)
  • Baris kedua: Jam kerja berupa angka yang dipisahkan koma (contoh: 45,32,50,28,40)
  • Baris ketiga: Ambang batas jam minimum dalam bentuk angka (contoh: 35)

Output yang diharapkan: Setiap karyawan yang memenuhi syarat beserta upah lemburnya pada baris terpisah, diikuti total upah lembur. Semua jumlah diformat hingga 2 angka desimal

Coba sendiri

<?php
// Baca input
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));

// Ubah jam kerja menjadi bilangan bulat
$hours = array_map('intval', $hours);

// Buat array asosiatif yang menggabungkan nama dan jam kerja
$employees = array_combine($names, $hours);

// TODO: Tulis kodemu di bawah ini
// 1. Gunakan array_filter() untuk mempertahankan karyawan yang bekerja selama atau melebihi jam minimum
// 2. Gunakan array_map() untuk menghitung upah lembur karyawan yang lolos penyaringan
// 3. Gunakan array_reduce() untuk menghitung total upah lembur

// Tampilkan hasilnya sebagai output
// Cetak upah lembur setiap karyawan yang memenuhi syarat
// Cetak total upah lembur

?>

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler PHP online