Задача 5 Урок 16
Primary tabs
Пользователь вводит N (N Напишите подпрограмму, которая определит - есть ли у них общее пересечение, и если есть - вычислит координаты отрезка-пересечения.
program u16z5;
type ar = array[1..5, 1..2] of integer;//увеличил массив из 4 задачи
br = array[1..2] of integer;
var a: ar;
b: br;
q: boolean;
i: integer;
procedure f1(c, d :integer; var b :br; var q :boolean); //поиск пересечения
begin
if (c <= b[1]) and (d <= b[2]) or (c <= b[2]) and (d >= b[1]) then
q := true
else
q := false;
if q then
begin
if c > b[1] then
b[1] := c;
if d < b[2] then
b[2] := d;
end;
end;
procedure r1(a :ar; var b :br; var q :boolean); //запись результата
var i, c, d :integer;
begin
b[1] := a[1, 1];
b[2] := a[1, 2];
for i := 2 to high(a) do
begin
c := a[i, 1];
d := a[i, 2];
f1(c, d, b, q);
if not q then
break;
end;
end;
procedure r2(b :br; q :boolean); //процедура вывода
begin
if not q then
writeln('He peresek')
else
writeln('Peresek : ', b[1], ' ', b[2]);
end;
begin
q := false;
for i := 1 to high(a) do
begin
writeln('Vvedite tochky 1 otrezka ',i);
readln(a[i, 1]);
writeln('Vvedite tochky 2 otrezka ',i);
readln(a[i, 2]);
end;
writeln();
writeln('Otrezku');
for i := 1 to high(a) do
begin
writeln(a[i, 1], ' ', a[i, 2]);
end;
r1(a, b, q);
r2(b, q);
readln();
end. - Log in to post comments
- 1782 reads
vedro-compota
Sun, 01/29/2023 - 13:26
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)