задача 2 урок 16

Задача 2 урок 16

Вспомогательная задача (можно решить, просто используя одномерные массивы):
Пользователь вводит 4 целых числа, считаем все их координатами на прямой, а именно:
первые два числа - начало и конце отрезка 1
вторые два - начало и конец отрезка 2

Решение

program lesson16;
type
  arrTwo = array[1..2, 1..2] of integer;
function find(a: arrTwo) : boolean;
begin
  if ((a[1][1] <= a[2][1]) and (a[2][2] <= a[1][2])) or ((a[2][1] <= a[1][1]) and (a[1][2] <= a[2][2])) then
      result := true
  else
      result := false;
end;

var
  a: arrTwo;
  i, j, n: integer;
  flag : boolean;
begin
  for i := low(a) to high(a) do
    begin
    writeln('perviy otrezok ', i);
    for j := low(a[i]) to high(a[i]) do
      begin
        readln(n);
        a[i][j] := n;
      end;
    end;
  flag := find(a);
  if flag then
    write('odin orezok vnutri drugogo')
  else
    write('otrezki ne vlogeni drug v gruga');
  readln
end.

Консоль №1

perviy otrezok 1
14
20
perviy otrezok 2
1
5
otrezki ne vlogeni drug v gruga

Консоль №2

perviy otrezok 1
1
10
perviy otrezok 2
-6
100
odin orezok vnutri drugogo
vedro-compota's picture

function find(a: arrTwo) : boolean;

-- лучше переделать на сигнатуру на прием 4 целых чисел

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

переделал ф-цию

program lesson16;
type
  arrTwo = array[1..2, 1..2] of integer;
function find(x1, y1, x2, y2: integer) : boolean;
begin
  if ((x1 <= x2) and (x2 <= y1)) or ((x2 <= x1) and (x1 <= y2)) then
      result := true
  else
      result := false;
end;

var
  a: arrTwo;
  i, j, n: integer;
  flag : boolean;
begin
  for i := low(a) to high(a) do
    begin
    writeln('perviy otrezok ', i);
    for j := low(a[i]) to high(a[i]) do
      begin
        readln(n);
        a[i][j] := n;
      end;
    end;
  flag := find(a[1][1], a[1][2], a[2][1], a[2][2]);
  if flag then
    write('peresekautsy')
  else
    write('NE peresekautsya');
  readln
end. 
vedro-compota's picture

засчитано

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