Определить сколько дней прошло между датами - Pascal

Узнай цену своей работы

Формулировка задачи:

не используя функции, и используя пользовательский тип
Type
  tmes=1..12;
  tday=1..31;
 const
   mes:array[1..12] of integer =(31,28,31,30,31,30,31,31,30,31,30,31);
var god1,god2,day,i:  integer;
    mes1,mes2:tmes;
    day1,day2:tday;
begin
  writeln('vvedit 2 dati v formate dd mm gggg cherez probel:');
  write(' 1 data - ');
  readln(day1,mes1,god1);
  write(' 2 data - ');
  readln(day2,mes2,god2);
  if (god1 mod 4)=0 then
   if ((god1 mod 100)=0) and ((god1 mod 400)<>0) then
    case mes1 of
     1,3,5,7,8,10,12 : day:=31-day1;
     2 : day:=28-day1;
     4,6,9,11 : day:=30-day;
    end
    else
    case mes1 of
     1,3,5,7,8,10,12 : day:=31-day1;
     2 : day:=29-day1;
     4,6,9,11 : day:=30-day;
    end
    else
    case mes1 of
     1,3,5,7,8,10,12 : day:=31-day1;
     2 : day:=28-day1;
     4,6,9,11 : day:=30-day;
    end;
    for i:=mes1+1 to 12 do
    begin
      if (god1 mod 4)=0 then
       if ((god1 mod 100)=0) and ((god1 mod 400)<>0) then
       case i of
         1,3,5,7,8,10,12 : day:=day+31;
         2 : day:=day+28;
         4,6,9,11 : day:=day+30;
       end
       else
       case i of
         1,3,5,7,8,10,12 : day:=day+31;
         2 : day:=day+29;
         4,6,9,11 : day:=day+30;
       end
       else
       case mes1 of
         1,3,5,7,8,10,12 : day:=day+31;
         2 : day:=day+28;
         4,6,9,11 : day:=day+30;
       end;
      end;
   for i:=god1+1 to god2-1 do
   begin
      if (i mod 4)=0 then
         if ((i mod 100)=0) and ((i mod 400)<>0) then day:=day+365
         else day:=day+366
      else day:=day+365;
   end;
   for i:=1 to mes2-1 do
   day:=day+mes[i];
   day:=day+day2;
   writeln('proshlo dnei',day);
end.
мои попытки

Решение задачи: «Определить сколько дней прошло между датами»

textual
Листинг программы
var
sdd,smm,syy:integer;
edd,emm,eyy:integer;
day:integer;
i:integer;
begin
    writeln('Начальная дата: ');
    write('День: ');readln(sdd);
    write('Месяц: ');readln(smm);
    write('Год: ');readln(syy);
    writeln('----------------');
    writeln('Конечная дата: ');
    write('День: ');readln(edd);
    write('Месяц: ');readln(emm);
    write('Год: ');readln(eyy);
    writeln('----------------');
    sdd:=sdd+(syy*365);
    smm:=smm-1;
    edd:=edd+(eyy*365);
    emm:=emm-1;
    for i:=1 to smm do
    begin
        case (i)of
            1,3,5,7,8,10,12:sdd:=sdd+31;
            2:sdd:=sdd+28;
            4,6,9,11:sdd:=sdd+30;
        end;
    end;
    for i:=1 to emm do
    begin
        case (i)of
            1,3,5,7,8,10,12:edd:=edd+31;
            2:edd:=edd+28;
            4,6,9,11:edd:=edd+30;
        end;
    end;
    writeln('Прошло дней: ',(edd-sdd));
    
end.

Объяснение кода листинга программы

  1. В начале программы объявляются переменные sdd, smm, syy, edd, emm, eyy и day. Переменная day используется для хранения количества дней между датами.
  2. Пользователю предлагается ввести начальную и конечную даты в формате День Месяц Год и День Месяц Год. Введенные данные сохраняются в переменных sdd, smm, syy, edd, emm, eyy соответственно.
  3. Затем происходит вычисление разницы между конечной и начальной датами и сохранение результата в переменной day.
  4. Далее происходит изменение значений переменных sdd и smm для учета високосных годов. Для этого используется цикл for, который выполняется smm раз. Внутри цикла происходит проверка месяца (используется оператор case) и, в зависимости от месяца, значение переменной sdd увеличивается на соответствующее количество дней. Аналогично происходит изменение значения переменной edd для конечной даты.
  5. После завершения цикла для smm происходит вывод результата на экран.
  6. Затем происходит повторный цикл for, но уже для переменной emm. Этот цикл также выполняется smm раз и аналогичен предыдущему, за исключением того, что он изменяет значения переменных edd и eyy.
  7. В конце программы выводится на экран сообщение о количестве дней между датами, которое получается путем вычитания значения переменной sdd из значения переменной edd.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы