Написать класс Date, содержащий три поля: день, месяц, год. С помощью функций...

0 голосов
35 просмотров

Написать класс Date, содержащий три поля: день, месяц, год. С помощью функций осуществить: 1) Проверку года на високосность 2) Увеличить дату на 5 дней


Информатика (1.8k баллов) | 35 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

PascalABC.NET 3.4.2, сборка 1859 от 08.11.2018

Внимание! Если программа не работает, обновите версию!

type

 Date = class

 private

   Дата: System.DateTime;

 public

   день, месяц, год: integer;

   constructor(d, m, y: integer);

   begin

     try

       Дата := new System.DateTime(y, m, d);

       (день, месяц, год) := (d, m, y);

     except

       Println('Недопустимая дата');

       (день, месяц, год) := (1, 1, 0);

     end

   end;

   

   procedure ДобавитьДни(dd: integer);

   begin

     Дата := Дата.AddDays(dd);

     (день, месяц, год) := (Дата.Day, Дата.Month, Дата.Year)

   end;

   

   function ГодВисокосный: boolean;

   begin

     if год mod 400 = 0 then Result := True

     else

     if год mod 100 = 0 then Result := False

     else Result := год mod 4 = 0

   end;

 

 end;


begin

 var (d, m, y) := ReadInteger3('Введите день, месяц и год:');

 var dd := new Date(d, m, y);

 if dd.ГодВисокосный then Println('Год високосный')

 else Println('Год не високосный');

 dd.ДобавитьДни(5);

 Print('Новая дата', $'{dd.Дата:dd.MM.yyyy}')

end.

Пример

Введите день, месяц и год: 9 11 2018

Год не високосный

Новая дата 14.11.2018

(654k баллов)
0 голосов

Держи, PHP:


class Date {

 private $день;

 private $месяц;

 private $год;


 function __construct() {

   $сегодня = new DateTime();

   $this->день = $сегодня->format('d');

   $this->месяц = $сегодня->format('m');

   $this->год = $сегодня->format('Y');

 }


 public function Получить_год() { return $this->год; }

 public function Получить_месяц() { return $this->месяц; }

 public function Получить_день() { return $this->день; }


 public function Високосный_год() {

   return $this->год % 4 == 0 && ($this->год % 100 != 0 || $this->год % 400 == 0);

 }


 public function Плюс_5_дней() {

   $дата = new DateTime(strtotime($this->год . '-' . sprintf('%02d', $this->месяц) . '-' . sprintf('%02d', $this->день)) + 60 * 60 * 24 * 5);

   $this->день = $дата->format('d');

   $this->месяц = $дата->format('m');

   $this->год = $дата->format('Y');

 }

}


$дата = new Date();

echo $дата->Високосный() ? 'Високосный' : 'Не високосный';

$дата->Плюс_5_дней();

(654k баллов)