Menu
Coddy logo textTech

Podsumowanie: przetwarzanie danych

Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 45 z 68.

challenge icon

Wyzwanie

Łatwy

Otrzymasz trzy dane wejściowe: listę imion i nazwisk pracowników rozdzielonych przecinkami, listę odpowiadających im godzin pracy w tygodniu, również rozdzielonych przecinkami, oraz próg minimalnej liczby godzin. Pierwsze dane wejściowe zawierają imiona i nazwiska w formacie Alice,Bob,Charlie,Diana,Eve, drugie zawierają liczbę godzin w formacie 45,32,50,28,40, a trzecie to próg minimalnej liczby godzin w postaci liczby (na przykład: 35).

Wczytaj wszystkie trzy dane wejściowe i przekształć je w odpowiednie tablice. Utwórz połączoną tablicę asocjacyjną, w której imiona i nazwiska pracowników będą kluczami, a liczba przepracowanych przez nich godzin — wartościami. Następnie wykonaj poniższe operacje przy użyciu funkcji wyższego rzędu dla tablic:

  1. Użyj array_filter() z niestandardową funkcją zwrotną, aby pozostawić tylko tych pracowników, którzy przepracowali co najmniej tyle godzin, ile wynosi próg minimalny
  2. Użyj array_map() z niestandardową funkcją zwrotną, aby obliczyć wynagrodzenie za nadgodziny dla przefiltrowanych pracowników (nadgodziny to godziny powyżej 40, płatne według stawki 1,5 raza wyższej niż stawka 25 $ za godzinę w ramach zwykłych godzin pracy)
  3. Użyj array_reduce() z niestandardową funkcją zwrotną, aby obliczyć łączne wynagrodzenie za nadgodziny wszystkich przefiltrowanych pracowników

Wyświetl wyniki w następującym formacie:

  • Najpierw wyświetl imię i nazwisko każdego zakwalifikowanego pracownika oraz jego wynagrodzenie za nadgodziny, każde w osobnym wierszu, w formacie Name: $Amount (zaokrąglone do 2 miejsc po przecinku)
  • Na koniec wyświetl łączne wynagrodzenie za nadgodziny w formacie Total: $Amount (zaokrąglone do 2 miejsc po przecinku)

Szczegóły obliczeń:

  • Zwykłe godziny pracy (do 40): 25 $ za godzinę
  • Nadgodziny (powyżej 40): 37.50 $ za godzinę (stawka 1,5 raza wyższa)
  • Jeśli pracownik przepracował 40 godzin lub mniej, jego wynagrodzenie za nadgodziny wynosi 0.00 $

Format danych wejściowych:

  • Pierwszy wiersz: imiona i nazwiska pracowników rozdzielone przecinkami (na przykład: Alice,Bob,Charlie,Diana,Eve)
  • Drugi wiersz: liczba godzin pracy podana jako liczby i rozdzielona przecinkami (na przykład: 45,32,50,28,40)
  • Trzeci wiersz: próg minimalnej liczby godzin w postaci liczby (na przykład: 35)

Oczekiwany wynik: Każdy zakwalifikowany pracownik wraz z wynagrodzeniem za nadgodziny w osobnym wierszu, a po nich łączne wynagrodzenie za nadgodziny; wszystkie kwoty są sformatowane do 2 miejsc po przecinku

Spróbuj swoich sił

<?php
// Odczytaj dane wejściowe
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));

// Przekształć godziny na liczby całkowite
$hours = array_map('intval', $hours);

// Utwórz tablicę asocjacyjną łączącą imiona i godziny
$employees = array_combine($names, $hours);

// TODO: Napisz swój kod poniżej
// 1. Użyj array_filter(), aby zachować pracowników, którzy przepracowali co najmniej minimalną liczbę godzin
// 2. Użyj array_map(), aby obliczyć wynagrodzenie za nadgodziny dla wybranych pracowników
// 3. Użyj array_reduce(), aby obliczyć łączne wynagrodzenie za nadgodziny

// Wyświetl wyniki
// Wyświetl wynagrodzenie za nadgodziny każdego pracownika spełniającego kryterium
// Wyświetl łączne wynagrodzenie za nadgodziny

?>

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator PHP online