<?php
class Employee
{
public $name; // имя-фамилия
public $rate; // часовая ставка (сколько он получает тугриков за час работы)
public $hours = array(); // массив, содержащий отработанные часы по неделям
public function __construct($name, $rate)
{
// задаем имя и часовую ставку
$this->name = $name;
$this->rate = $rate;
}
/** Считает общее число отработанных часов */
public function getTotalHoursWorked()
{
// Просто складываем значения часов в массиве
}
/** Считает зарплату */
public function getSalary()
{
// Получаем число отработанных часов
$hours = $this->getTotalHoursWorked();
// и умножаем на часовую ставку
$salary = $hours * $this->rate;
return $salary;
}
}
function padLeft($string, $length) { //Добавляет пробелы слева.
if ($lengthOfString < $length) {
$add = $length - $lengthOfString;
return str_pad($string, $add, ' ' , STR_PAD_LEFT
); }
else {
return $string;
}
}
function padRight($string, $length) { //Добавляет пробелы справа
if ($lengthOfString < $length) {
$add = $length - $lengthOfString;
return str_pad($string, $add, ' ' , STR_PAD_RIGHT
); }
else {
return $string;
}
}
$ivan = new Employee("Иванов Иван", 10);
// name и rate заданы через конструктор, потому осталось лишь написать часы
$ivan->hours = array(40, 40, 40, 40); // Иван работает по 40 часов в неделю
$peter = new Employee("Петров Петр", 8);
$peter->hours = array(40, 10, 40, 50); // Петр взял отгул и потому отработал меньше часов, // но в последнюю неделю решил поработать побольше
$employees = array($ivan, $peter);
$col1 = 30;
$col2 = 12;
$col3 = 12;
$col4 = 12;
// Вывести все в таблице
// Заголовок таблицы
echo padRight("Сотрудник", $col1) .
padLeft("Часы", $col2) .
padLeft("Ставка", $col3) .
padLeft("З/п", $col4) . "\n\n";
// Сама таблица
foreach ($employees as $employee) {
echo padRight($employee->name, $col1) .
padLeft($employee->getTotalHoursWorked(), $col2) .
padLeft($employee->rate, $col3) .
padLeft($employee->getSalary(), $col4) . "\n";
}
?>
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7CgptYl9pbnRlcm5hbF9lbmNvZGluZygndXRmLTgnKTsKCmNsYXNzIEVtcGxveWVlICAgICAgICAgICAgIAp7CiAgICBwdWJsaWMgJG5hbWU7ICAgICAgICAgICAgICAgLy8g0LjQvNGPLdGE0LDQvNC40LvQuNGPCiAgICBwdWJsaWMgJHJhdGU7ICAgICAgICAgICAgICAgLy8g0YfQsNGB0L7QstCw0Y8g0YHRgtCw0LLQutCwICjRgdC60L7Qu9GM0LrQviDQvtC9INC/0L7Qu9GD0YfQsNC10YIg0YLRg9Cz0YDQuNC60L7QsiDQt9CwINGH0LDRgSDRgNCw0LHQvtGC0YspCiAgICBwdWJsaWMgJGhvdXJzID0gYXJyYXkoKTsgICAgLy8g0LzQsNGB0YHQuNCyLCDRgdC+0LTQtdGA0LbQsNGJ0LjQuSDQvtGC0YDQsNCx0L7RgtCw0L3QvdGL0LUg0YfQsNGB0Ysg0L/QviDQvdC10LTQtdC70Y/QvAoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSwgJHJhdGUpCiAgICB7CiAgICAgICAgLy8g0LfQsNC00LDQtdC8INC40LzRjyDQuCDRh9Cw0YHQvtCy0YPRjiDRgdGC0LDQstC60YMKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5yYXRlID0gJHJhdGU7CiAgICB9CgogICAgLyoqINCh0YfQuNGC0LDQtdGCINC+0LHRidC10LUg0YfQuNGB0LvQviDQvtGC0YDQsNCx0L7RgtCw0L3QvdGL0YUg0YfQsNGB0L7QsiAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFRvdGFsSG91cnNXb3JrZWQoKQogICAgewogICAgICAgIC8vINCf0YDQvtGB0YLQviDRgdC60LvQsNC00YvQstCw0LXQvCDQt9C90LDRh9C10L3QuNGPINGH0LDRgdC+0LIg0LIg0LzQsNGB0YHQuNCy0LUKICAgICAgICByZXR1cm4gYXJyYXlfc3VtKCR0aGlzLT5ob3Vycyk7CiAgICB9CgogICAgLyoqINCh0YfQuNGC0LDQtdGCINC30LDRgNC/0LvQsNGC0YMgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTYWxhcnkoKQogICAgewogICAgICAgIC8vINCf0L7Qu9GD0YfQsNC10Lwg0YfQuNGB0LvQviDQvtGC0YDQsNCx0L7RgtCw0L3QvdGL0YUg0YfQsNGB0L7QsgogICAgICAgICRob3VycyA9ICR0aGlzLT5nZXRUb3RhbEhvdXJzV29ya2VkKCk7CiAgICAgICAgLy8g0Lgg0YPQvNC90L7QttCw0LXQvCDQvdCwINGH0LDRgdC+0LLRg9GOINGB0YLQsNCy0LrRgwogICAgICAgICRzYWxhcnkgPSAkaG91cnMgKiAkdGhpcy0+cmF0ZTsKICAgICAgICByZXR1cm4gJHNhbGFyeTsKICAgIH0KfQpmdW5jdGlvbiBwYWRMZWZ0KCRzdHJpbmcsICRsZW5ndGgpIHsgLy/QlNC+0LHQsNCy0LvRj9C10YIg0L/RgNC+0LHQtdC70Ysg0YHQu9C10LLQsC4KCSRsZW5ndGhPZlN0cmluZyA9IG1iX3N0cmxlbigkc3RyaW5nKTsKCWlmICgkbGVuZ3RoT2ZTdHJpbmcgPCAkbGVuZ3RoKSB7CgkJJGFkZCA9ICRsZW5ndGggLSAkbGVuZ3RoT2ZTdHJpbmc7CgkJcmV0dXJuIHN0cl9wYWQoJHN0cmluZywgJGFkZCwgJyAnICwgU1RSX1BBRF9MRUZUKTsKCX0KCWVsc2UgewoJCXJldHVybiAkc3RyaW5nOwoJfQp9CmZ1bmN0aW9uIHBhZFJpZ2h0KCRzdHJpbmcsICRsZW5ndGgpIHsgLy/QlNC+0LHQsNCy0LvRj9C10YIg0L/RgNC+0LHQtdC70Ysg0YHQv9GA0LDQstCwCgkkbGVuZ3RoT2ZTdHJpbmcgPSBtYl9zdHJsZW4oJHN0cmluZyk7CglpZiAoJGxlbmd0aE9mU3RyaW5nIDwgJGxlbmd0aCkgewoJCSRhZGQgPSAkbGVuZ3RoIC0gJGxlbmd0aE9mU3RyaW5nOwoJCXJldHVybiBzdHJfcGFkKCRzdHJpbmcsICRhZGQsICcgJyAsIFNUUl9QQURfUklHSFQpOwoJfQoJZWxzZSB7CgkJcmV0dXJuICRzdHJpbmc7Cgl9Cn0KCgokaXZhbiA9IG5ldyBFbXBsb3llZSgi0JjQstCw0L3QvtCyINCY0LLQsNC9IiwgMTApOwovLyBuYW1lINC4IHJhdGUg0LfQsNC00LDQvdGLINGH0LXRgNC10Lcg0LrQvtC90YHRgtGA0YPQutGC0L7RgCwg0L/QvtGC0L7QvNGDINC+0YHRgtCw0LvQvtGB0Ywg0LvQuNGI0Ywg0L3QsNC/0LjRgdCw0YLRjCDRh9Cw0YHRiwokaXZhbi0+aG91cnMgPSBhcnJheSg0MCwgNDAsIDQwLCA0MCk7ICAgLy8g0JjQstCw0L0g0YDQsNCx0L7RgtCw0LXRgiDQv9C+IDQwINGH0LDRgdC+0LIg0LIg0L3QtdC00LXQu9GOCgokcGV0ZXIgPSBuZXcgRW1wbG95ZWUoItCf0LXRgtGA0L7QsiDQn9C10YLRgCIsIDgpOwokcGV0ZXItPmhvdXJzID0gYXJyYXkoNDAsIDEwLCA0MCwgNTApOyAgLy8g0J/QtdGC0YAg0LLQt9GP0Lsg0L7RgtCz0YPQuyDQuCDQv9C+0YLQvtC80YMg0L7RgtGA0LDQsdC+0YLQsNC7INC80LXQvdGM0YjQtSDRh9Cw0YHQvtCyLCAKCQkJCQkJCQkJCS8vINC90L4g0LIgINC/0L7RgdC70LXQtNC90Y7RjiDQvdC10LTQtdC70Y4g0YDQtdGI0LjQuyDQv9C+0YDQsNCx0L7RgtCw0YLRjCDQv9C+0LHQvtC70YzRiNC1CiRlbXBsb3llZXMgPSBhcnJheSgkaXZhbiwgJHBldGVyKTsKCiRjb2wxID0gMzA7CiRjb2wyID0gMTI7CiRjb2wzID0gMTI7CiRjb2w0ID0gMTI7Ci8vINCS0YvQstC10YHRgtC4INCy0YHQtSDQsiDRgtCw0LHQu9C40YbQtSAKLy8g0JfQsNCz0L7Qu9C+0LLQvtC6INGC0LDQsdC70LjRhtGLCmVjaG8gcGFkUmlnaHQoItCh0L7RgtGA0YPQtNC90LjQuiIsICRjb2wxKSAuCiAgICAgcGFkTGVmdCgi0KfQsNGB0YsiLCAkY29sMikgLiAKICAgICBwYWRMZWZ0KCLQodGC0LDQstC60LAiLCAkY29sMykgLiAKICAgICBwYWRMZWZ0KCLQly/QvyIsICRjb2w0KSAuICJcblxuIjsKCi8vINCh0LDQvNCwINGC0LDQsdC70LjRhtCwCmZvcmVhY2ggKCRlbXBsb3llZXMgYXMgJGVtcGxveWVlKSB7CiAgICBlY2hvIHBhZFJpZ2h0KCRlbXBsb3llZS0+bmFtZSwgJGNvbDEpIC4KICAgICAgICAgcGFkTGVmdCgkZW1wbG95ZWUtPmdldFRvdGFsSG91cnNXb3JrZWQoKSwgJGNvbDIpIC4gCiAgICAgICAgIHBhZExlZnQoJGVtcGxveWVlLT5yYXRlLCAkY29sMykgLiAKICAgICAgICAgcGFkTGVmdCgkZW1wbG95ZWUtPmdldFNhbGFyeSgpLCAkY29sNCkgLiAiXG4iOwp9Cj8+