Const names:array[1..7] of string=('пн','вт','ср','чт','пт','сб','вс'); var k,i,n0,np,nw,year,dw:integer; begin k:=0; n0:=6; //01.01.2000 - суббота for i:=2000 to 2100 do begin if (i mod 400=0)or(i mod 4=0)and(i mod 100<>0) then begin year:=366; dw:=31+29+31+3; end else begin year:=365; dw:=31+28+31+3; end; np:=(255+n0-1) mod 7+1; nw:=(dw+n0-1) mod 7+1; n0:=(year+n0-1) mod 7+1; if np=nw then begin writeln(i,' - ',names[np]); k:=k+1; end; end; writeln('k = ',k); end.
PROGRAM A23; const max = 42; var vt:array[1..max]of integer; i,n:byte; x:integer; num:integer;
BEGIN n := max; writeln('Массив из n элементов будет задан случайными числами на интервале [0..20].'); readln(n); writeln('Подсчитать количество положительных элементов больших чем указанное число.'); writeln('Введите число: '); readln(x); writeln(' ');
writeln('Начальный Массив' ); randomize;
num := 0; for i:=1 to n do begin vt[i]:=random(-512,512); write(vt[i], ' ');
if (vt[i]>0) then num:=num+1;
end; writeln(' ');
writeln('Найдено ', num,' положительных элементов больших чем ', x);
names:array[1..7] of string=('пн','вт','ср','чт','пт','сб','вс');
var k,i,n0,np,nw,year,dw:integer;
begin
k:=0;
n0:=6; //01.01.2000 - суббота
for i:=2000 to 2100 do
begin
if (i mod 400=0)or(i mod 4=0)and(i mod 100<>0)
then begin year:=366; dw:=31+29+31+3; end
else begin year:=365; dw:=31+28+31+3; end;
np:=(255+n0-1) mod 7+1;
nw:=(dw+n0-1) mod 7+1;
n0:=(year+n0-1) mod 7+1;
if np=nw then
begin writeln(i,' - ',names[np]); k:=k+1; end;
end;
writeln('k = ',k);
end.
Результат:
2000 - вт
2004 - вс
2008 - пт
...
2092 - пт
2096 - ср
k = 25
PS. Високосные годы, однако )
const
max = 42;
var
vt:array[1..max]of integer;
i,n:byte;
x:integer;
num:integer;
BEGIN
n := max;
writeln('Массив из n элементов будет задан случайными числами на интервале [0..20].');
readln(n);
writeln('Подсчитать количество положительных элементов больших чем указанное число.');
writeln('Введите число: '); readln(x);
writeln(' ');
writeln('Начальный Массив' );
randomize;
num := 0;
for i:=1 to n do begin
vt[i]:=random(-512,512);
write(vt[i], ' ');
if (vt[i]>0) then
num:=num+1;
end;
writeln(' ');
writeln('Найдено ', num,' положительных элементов больших чем ', x);
END.