Pascal.abc 1: пользователь вводит 10 чисел. создать счетчики, и подсчитать сколько чисел положительные, отрицательные, равные нулю. 2: пользователь вводит число n. вывести сумму первых n целых чисел.
type data = record number : 1..31; month : 1..12; year : 1901..1997 end;
var d:array[1..nn] of data; i,n,k:integer; s,s1,s2,s3:string; begin Write('Количество дат (1..50)-> '); Read(n); Writeln('Введите через пробел день, месяц, год: '); for i:=1 to n do Read(d[i].number,d[i].month,d[i].year); { a } Write('Самый ранний из годов: '); k:=d[1].year; for i:=2 to n do if d[i].year<k then k:=d[i].year; Writeln(k); { б } Writeln('Все весенние даты'); for i:=1 to n do if d[i].month in [3..5] then Write(d[i].number,'.',d[i].month,'.',d[i].year,' '); Writeln; { в } Write('Cамая поздняя дата: '); Str(d[1].year,s1); Str(d[1].month,s2); Str(d[1].number,s3); if Length(s2)=1 then s2:='0'+s2; if Length(s3)=1 then s3:='0'+s3; s:=s1+s2+s3; for i:=2 to n do begin Str(d[i].year,s1); Str(d[i].month,s2); Str(d[i].number,s3); if Length(s2)=1 then s2:='0'+s2; if Length(s3)=1 then s3:='0'+s3; if s<s1+s2+s3 then s:=s1+s2+s3 end; Writeln(Copy(s,7,2)+'.'+Copy(s,5,2)+'.'+Copy(s,1,4)) end.
Тестовое решение: Количество дат (1..50)-> 6 Введите через пробел день, месяц, год: 18 4 1950 16 5 1968 5 8 1970 3 9 1968 11 6 1964 16 12 1967 Самый ранний из годов: 1950 Все весенние даты 18.4.1950 16.5.1968 Cамая поздняя дата: 05.08.1970
Var a,i,j,b,p,p1:longint; m:array[0..501] of longint; procedure qsort(l,r:longint); var q,w,i,j,p:longint; begin q:=m[(l+r) div 2]; repeat while m[i]<q do inc(i); while m[j]>q do dec(j); if i<j then begin w:=m[i]; m[i]:=m[j]; m[j]:=w; inc(i); dec(j);inc(p); end; if i=j then begin inc(i);dec(j); end; until i>j; if i<r then qsort(i,r); if j<l then qsort(l,j); p1:=p; end; begin for i:=1 to 500 do m[i]:=random(100); for i:=1 to 500 do for j:=500 downto i+1 do if m[j]<m[i] then begin a:=m[j]; m[j]:=m[i]; m[i]:=a; inc(p); end; writeln(p); qsort(1,500); writeln(p1); end.
nn=50;
type
data = record
number : 1..31;
month : 1..12;
year : 1901..1997
end;
var
d:array[1..nn] of data;
i,n,k:integer;
s,s1,s2,s3:string;
begin
Write('Количество дат (1..50)-> '); Read(n);
Writeln('Введите через пробел день, месяц, год: ');
for i:=1 to n do Read(d[i].number,d[i].month,d[i].year);
{ a }
Write('Самый ранний из годов: ');
k:=d[1].year;
for i:=2 to n do
if d[i].year<k then k:=d[i].year;
Writeln(k);
{ б }
Writeln('Все весенние даты');
for i:=1 to n do
if d[i].month in [3..5] then
Write(d[i].number,'.',d[i].month,'.',d[i].year,' ');
Writeln;
{ в }
Write('Cамая поздняя дата: ');
Str(d[1].year,s1); Str(d[1].month,s2); Str(d[1].number,s3);
if Length(s2)=1 then s2:='0'+s2;
if Length(s3)=1 then s3:='0'+s3;
s:=s1+s2+s3;
for i:=2 to n do
begin
Str(d[i].year,s1); Str(d[i].month,s2); Str(d[i].number,s3);
if Length(s2)=1 then s2:='0'+s2;
if Length(s3)=1 then s3:='0'+s3;
if s<s1+s2+s3 then s:=s1+s2+s3
end;
Writeln(Copy(s,7,2)+'.'+Copy(s,5,2)+'.'+Copy(s,1,4))
end.
Тестовое решение:
Количество дат (1..50)-> 6
Введите через пробел день, месяц, год:
18 4 1950
16 5 1968
5 8 1970
3 9 1968
11 6 1964
16 12 1967
Самый ранний из годов: 1950
Все весенние даты
18.4.1950 16.5.1968
Cамая поздняя дата: 05.08.1970
m:array[0..501] of longint;
procedure qsort(l,r:longint);
var q,w,i,j,p:longint;
begin
q:=m[(l+r) div 2];
repeat
while m[i]<q do inc(i);
while m[j]>q do dec(j);
if i<j then
begin
w:=m[i];
m[i]:=m[j];
m[j]:=w;
inc(i); dec(j);inc(p);
end;
if i=j then
begin
inc(i);dec(j);
end;
until i>j;
if i<r then qsort(i,r);
if j<l then qsort(l,j);
p1:=p;
end;
begin
for i:=1 to 500 do
m[i]:=random(100);
for i:=1 to 500 do
for j:=500 downto i+1 do
if m[j]<m[i] then
begin
a:=m[j];
m[j]:=m[i];
m[i]:=a;
inc(p);
end;
writeln(p);
qsort(1,500);
writeln(p1);
end.