Создать файл F, который имеет даты. Каждая дата состоит из Числа, Месяц и года. Вывести все Весенние даты — Pascal(Паскаль)

uses crt;
type data=record
          d:1..31;
          m:1..12;
          g:1..2100;
          end;
     fail=file of data;
var f:fail;
    dt:data;
    n,i,k:byte;
 
begin
clrscr;
assign(f,'file1');
rewrite(f);
write('Сколько дат ввести в файл n=');
readln(n);
for i:=1 to n do
with dt do
 begin
  repeat
  write('Год 1-2100: ');readln(g);
  if (g<0)or(g>2100) then writeln('Неверно, повторите ввод.');
  until(g>0)and(g<=2100);
  repeat
  write('Месяц: ');readln(m);
  if not(m in [1..12])then writeln('Неверно, повторите ввод.');
  until m in [1..12];
  repeat
  k:=0;
  write('День:');readln(d);
  if(m in [4,6,9,11])and(d=31)then k:=1;{или месяц короткий, а день=31}
  if(m=2)and(((g mod 100<>0)and(g mod 4=0))or(g mod 400=0))
  and(d>29) then k:=1; {если февраль високосного года, а день больше 29}
  if(m=2)and((g mod 4<>0)or((g mod 100=0)and(g mod 400<>0)))and(d>28)
  then k:=1; {если февраль невисокосного года, а день больше 28}
  if k=1 then write('Неверно, повторите ввод.');
  until k=0;
  write(f,dt);
 end;
reset(f);
writeln('Все весенние даты:');
k:=0;
while not eof(f) do
 begin
  read(f,dt);
  if dt.m in [3..5] then
   begin
    k:=1;
    with dt do writeln(d,'.',m,'.',g);
   end;
 end;
close(f);
if k=0 then write('Весенних дат нет!');
readln
end.

Leave a Comment

71 + = 79