Задача 5 Урок 16

Задача 5 Урок 16:

Пользователь вводит 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.    
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)