{ PascalABC.Net } const nn=100; var a:array[1..nn] of integer; n:integer;
procedure aInit(p,q:integer); { Инициализирует массив случайными целыми значениями из интервала [p;q] } var i,k:integer; begin Randomize; k:=q-p+1; for i:=1 to n do a[i]:=Random(k)+p end;
procedure aOut(k:integer); { Выводит в строку значения эементов массива, отводя элементу k позиций } var i:integer; begin for i:=1 to n do Write(a[i]:k); Writeln end;
function aMax():integer; { Возвращает максимальное значение элемента в массиве } var i,m:integer; begin m:=a[1]; for i:=2 to n do if m<a[i] then m:=a[i]; aMax:=m end;
function SumBeforeLastPositive():integer; { Возвращает сумму элементов массива, расположенных до последнего положительного элемента } var i,j,s:integer; flag:boolean; begin i:=n; flag:=false; while (not flag) and (i>=1) do begin flag:=(a[i]<=0); if not flag then Dec(i) end; s:=0; for j:=1 to i-1 do s:=s+a[j]; SumBeforeLastPositive:=s end;
procedure aShrink(pa,pb:integer); { Процедура сжимает массив, удаляя из него элементы, модуль которых находится в интервале [pa;pb]. Освободившийся элементы заполняются нулями. } var i,j,k:integer; flag:boolean; begin k:=0; i:=1; while i<=n do if a[i] in [pa..pb] then begin if k=0 then k:=i-1; j:=i+1; flag:=false; while (not flag) and (j<=n) do begin flag:=not (a[j] in [pa..pb]); if not flag then Inc(j); end; if flag then begin Inc(k); a[k]:=a[j]; i:=j+1 end else i:=n+1 end else begin Inc(k); a[k]:=a[i]; Inc(i) end; for i:=k+1 to n do a[i]:=0 end;
var p,q,k,b,c:integer; begin Write('Укажите количество членов в массиве: '); Read(n); Write('Укажите интервал значений элементов массива: '); Read(p,q); Write('Укажите интервал исключаемых элементов массива: '); Read(b,c); Write('Укажите количество позиций для вывода значений элемента: '); Read(k);
aInit(p,q); Write('Исходный массив'); aOut(k); Writeln('Значение максимального элемента равно ',aMax()); Writeln('Сумма до последнего положительного равна ',SumBeforeLastPositive()); Writeln('Сжатый массив'); aShrink(b,c); aOut(k) end.
Тестовое решение: Укажите количество членов в массиве: 15 Укажите интервал значений элементов массива: -6 9 Укажите интервал исключаемых элементов массива: -2 3 Укажите количество позиций для вывода значений элемента: 3 Исходный массив 7 7 7 -1 5 5 -5 6 0 -1 3 2 -4 1 8 Значение максимального элемента равно 8 Сумма до последнего положительного равна 35 Сжатый массив 7 7 7 5 5 -5 6 -4 8 0 0 0 0 0 0
Program p452; var a,b,m,d:integer; begin Write('Введите размеры форточки (а,b) в см: '); Read(a,b); Write('Введите диаметр головы Васи в см: '); Read(d); if a<b then m:=a+2 else m:=b+2; { +2 - это зазор по 1 см с обоих сторон } if d<=m then Writeln('Голова проходит') else Writeln('Голова не проходит') end.
Тестовое решение: Введите размеры форточки (а,b) в см: 25 40 введите диаметр головы Васи в см: 23 Голова проходит
program p453; var a,b,c,x,y,m1,m2,n1,n2:integer; begin Write('Введите размеры кирпича в см (a,b,c): '); Read(a,b,c); Write('Введите размеры отверстия в см (x,y): '); Read(x,y); if a<b then if a<c then begin m1:=a; if b<c then m2:=b else m2:=c end else begin m1:=c; m2:=a end else if b<c then begin m1:=b; if a<c then m2:=a else m2:=c end else begin m1:=c; m2:=b end; if x<y then begin n1:=x; n2:=y end else begin n1:=y; n2:=x end; if (m1<=n1) and (m2<=n2) then Writeln('Кирпич пройдет в отверстие') else Writeln('Кирпич не пройдет в отверстие') end.
Тестовое решение: Введите размеры кирпича в см (a,b,c): 10 4 12 Введите размеры отверстия в см (x,y): 5 9 Кирпич не пройдет в отверстие
program p454; var a,b:integer; begin Write('Введите значения а и b: '); Read(a,b); Writeln('Размеры чемодана ',3*a,'x',2*a,'x',a); Writeln('Размеры коробки ',3*b,'x',2*b,'x',b); if b<a then Writeln('Коробка поместится в чемодан') else Writeln('Коробка не поместится в чемодан') end.
Тестовое решение: Введите значения а и b: 18 16 Размеры чемодана 54x36x18 Размеры коробки 48x32x16 Коробка поместится в чемодан
const
nn=100;
var
a:array[1..nn] of integer;
n:integer;
procedure aInit(p,q:integer);
{ Инициализирует массив случайными целыми значениями из интервала [p;q] }
var
i,k:integer;
begin
Randomize;
k:=q-p+1;
for i:=1 to n do a[i]:=Random(k)+p
end;
procedure aOut(k:integer);
{ Выводит в строку значения эементов массива, отводя элементу k позиций }
var
i:integer;
begin
for i:=1 to n do Write(a[i]:k);
Writeln
end;
function aMax():integer;
{ Возвращает максимальное значение элемента в массиве }
var
i,m:integer;
begin
m:=a[1];
for i:=2 to n do
if m<a[i] then m:=a[i];
aMax:=m
end;
function SumBeforeLastPositive():integer;
{ Возвращает сумму элементов массива,
расположенных до последнего положительного элемента }
var
i,j,s:integer;
flag:boolean;
begin
i:=n; flag:=false;
while (not flag) and (i>=1) do begin
flag:=(a[i]<=0);
if not flag then Dec(i)
end;
s:=0;
for j:=1 to i-1 do s:=s+a[j];
SumBeforeLastPositive:=s
end;
procedure aShrink(pa,pb:integer);
{
Процедура сжимает массив, удаляя из него элементы,
модуль которых находится в интервале [pa;pb].
Освободившийся элементы заполняются нулями.
}
var
i,j,k:integer;
flag:boolean;
begin
k:=0; i:=1;
while i<=n do
if a[i] in [pa..pb] then
begin
if k=0 then k:=i-1;
j:=i+1; flag:=false;
while (not flag) and (j<=n) do begin
flag:=not (a[j] in [pa..pb]);
if not flag then Inc(j);
end;
if flag then begin Inc(k); a[k]:=a[j]; i:=j+1 end
else i:=n+1
end
else begin Inc(k); a[k]:=a[i]; Inc(i) end;
for i:=k+1 to n do a[i]:=0
end;
var
p,q,k,b,c:integer;
begin
Write('Укажите количество членов в массиве: ');
Read(n);
Write('Укажите интервал значений элементов массива: ');
Read(p,q);
Write('Укажите интервал исключаемых элементов массива: ');
Read(b,c);
Write('Укажите количество позиций для вывода значений элемента: ');
Read(k);
aInit(p,q);
Write('Исходный массив'); aOut(k);
Writeln('Значение максимального элемента равно ',aMax());
Writeln('Сумма до последнего положительного равна ',SumBeforeLastPositive());
Writeln('Сжатый массив');
aShrink(b,c); aOut(k)
end.
Тестовое решение:
Укажите количество членов в массиве: 15
Укажите интервал значений элементов массива: -6 9
Укажите интервал исключаемых элементов массива: -2 3
Укажите количество позиций для вывода значений элемента: 3
Исходный массив 7 7 7 -1 5 5 -5 6 0 -1 3 2 -4 1 8
Значение максимального элемента равно 8
Сумма до последнего положительного равна 35
Сжатый массив
7 7 7 5 5 -5 6 -4 8 0 0 0 0 0 0
var
a,b,m,d:integer;
begin
Write('Введите размеры форточки (а,b) в см: ');
Read(a,b);
Write('Введите диаметр головы Васи в см: ');
Read(d);
if a<b then m:=a+2 else m:=b+2;
{ +2 - это зазор по 1 см с обоих сторон }
if d<=m then Writeln('Голова проходит')
else Writeln('Голова не проходит')
end.
Тестовое решение:
Введите размеры форточки (а,b) в см: 25 40
введите диаметр головы Васи в см: 23
Голова проходит
program p453;
var
a,b,c,x,y,m1,m2,n1,n2:integer;
begin
Write('Введите размеры кирпича в см (a,b,c): ');
Read(a,b,c);
Write('Введите размеры отверстия в см (x,y): ');
Read(x,y);
if a<b then
if a<c then begin
m1:=a;
if b<c then m2:=b else m2:=c
end
else begin m1:=c; m2:=a end
else
if b<c then begin
m1:=b;
if a<c then m2:=a else m2:=c
end
else begin m1:=c; m2:=b end;
if x<y then begin n1:=x; n2:=y end
else begin n1:=y; n2:=x end;
if (m1<=n1) and (m2<=n2) then Writeln('Кирпич пройдет в отверстие')
else Writeln('Кирпич не пройдет в отверстие')
end.
Тестовое решение:
Введите размеры кирпича в см (a,b,c): 10 4 12
Введите размеры отверстия в см (x,y): 5 9
Кирпич не пройдет в отверстие
program p454;
var
a,b:integer;
begin
Write('Введите значения а и b: '); Read(a,b);
Writeln('Размеры чемодана ',3*a,'x',2*a,'x',a);
Writeln('Размеры коробки ',3*b,'x',2*b,'x',b);
if b<a then Writeln('Коробка поместится в чемодан')
else Writeln('Коробка не поместится в чемодан')
end.
Тестовое решение:
Введите значения а и b: 18 16
Размеры чемодана 54x36x18
Размеры коробки 48x32x16
Коробка поместится в чемодан