Menu
Coddy logo textTech

Özet: Veri İşleme

Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 45 / 68.

challenge icon

Görev

Kolay

Üç girdi alacaksınız: virgülle ayrılmış bir çalışan adları listesi, bunlara karşılık gelen haftalık çalışma saatlerinin virgülle ayrılmış bir listesi ve minimum saat eşiği. İlk girdi, Alice,Bob,Charlie,Diana,Eve biçiminde adları içerir; ikinci girdi, 45,32,50,28,40 biçiminde sayılar olarak saatleri içerir ve üçüncü girdi, sayı olarak minimum saat eşiğidir (örnek: 35).

Üç girdinin tümünü okuyun ve uygun dizilere dönüştürün. Çalışan adlarının anahtar, çalışma saatlerinin değer olduğu birleşik bir ilişkisel dizi oluşturun. Ardından aşağıdaki işlemleri üst düzey dizi işlevlerini kullanarak gerçekleştirin:

  1. Minimum saat eşiğinde veya üzerinde çalışan çalışanları tutmak için özel bir geri çağırma işleviyle array_filter() kullanın
  2. Filtrelenmiş çalışanların fazla mesai ücretini hesaplamak için özel bir geri çağırma işleviyle array_map() kullanın (fazla mesai, 40'ın üzerindeki saatlerdir ve normal saatler için saat başına 25 $ ücretin 1,5 katı üzerinden ödenir)
  3. Filtrelenmiş tüm çalışanların toplam fazla mesai ücretini hesaplamak için özel bir geri çağırma işleviyle array_reduce() kullanın

Sonuçları aşağıdaki biçimde yazdırın:

  • Önce, uygun her çalışanın adını ve fazla mesai ücretini ayrı satırlarda Name: $Amount biçiminde yazdırın (2 ondalık basamağa yuvarlanmış olarak)
  • Son olarak, toplam fazla mesai ücretini Total: $Amount biçiminde yazdırın (2 ondalık basamağa yuvarlanmış olarak)

Hesaplama ayrıntıları:

  • Normal saatler (40 saate kadar): Saat başına 25 $
  • Fazla mesai saatleri (40 saatin üzeri): Saat başına 37,50 $ (ücretin 1,5 katı)
  • Bir çalışan 40 saat veya daha az çalıştıysa fazla mesai ücreti 0,00 $ olur

Girdi biçimi:

  • İlk satır: Virgülle ayrılmış çalışan adları (örnek: Alice,Bob,Charlie,Diana,Eve)
  • İkinci satır: Sayı olarak virgülle ayrılmış çalışma saatleri (örnek: 45,32,50,28,40)
  • Üçüncü satır: Sayı olarak minimum saat eşiği (örnek: 35)

Beklenen çıktı: Her uygun çalışan, fazla mesai ücretiyle birlikte ayrı satırlarda; ardından toplam fazla mesai ücreti yer alır ve tüm tutarlar 2 ondalık basamağa biçimlendirilir

Kendin dene

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

// Saatleri tam sayıya dönüştür
$hours = array_map('intval', $hours);

// İsimleri ve saatleri birleştiren ilişkisel dizi oluştur
$employees = array_combine($names, $hours);

// TODO: Kodunuzu aşağıya yazın
// 1. Minimum çalışma saatinde veya üzerinde çalışan personelleri tutmak için array_filter() kullanın
// 2. Filtrelenmiş personeller için fazla mesai ücretini hesaplamak üzere array_map() kullanın
// 3. Toplam fazla mesai ücretini hesaplamak için array_reduce() kullanın

// Sonuçları yazdır
// Her bir kalifiye personelin fazla mesai ücretini yazdır
// Toplam fazla mesai ücretini yazdır

?>

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi