Урок 16 Задача 2
Primary tabs
Вспомогательная задача (можно решить, просто используя одномерные массивы):
Пользователь вводит 4 целых числа, считаем все их координатами на прямой, а именно:первые два числа - начало и конце отрезка 1
вторые два - начало и конец отрезка 2Задача: напишите подпрограмму, которая определит пересекаются ли данные отрезки.
type massiv = array[1..2, 1..2] of integer; // 2 подмассива по 2 элемента var a: massiv; n, i, j: integer; q: boolean; // функция проверяет, есть ли в первом подмассиве значения второго подмассива function prov (a: massiv): boolean; var i, j: integer; q: boolean; begin q:= false; for i:= a[1][1] to a[1][2] do // внешний цикл, обходим первый подмассив begin for j:=a[2][1] to a[2][2] do // вложенный цикл, обходим второй подмассив if i = j then begin q:= true; break; end; if q = true then break; end; result:= q; end; begin for i:=low(a) to high(a) do // внешний цикл begin writeln('Введите координаты начала и конца отрезка ', i, ':'); for j:=low(a[i]) to high(a[i]) do // вложенный цикл, обходим подмассивы по элементам begin readln (a[i][j]); // считываем введенное значение в элемент подмассива if (j = 2) and (a[i][2] < a[i][1]) then {если первый элемент подмассива больше, чем второй,} begin {то меняем их местами} n:= a[i][2]; a[i][2]:= a[i][1]; a[i][1]:= n; end else end; end; q:= prov (a); // передаем в функцию массив, получаем результат проверки if q = true then write ('Отрезки пересекаются') else write ('Отрезки не пересекаются'); readln(); end.
Вывод в консоли:
Введите координаты начала и конца отрезка 1: 2 19 Введите координаты начала и конца отрезка 2: 8 33 Отрезки пересекаются
Введите координаты начала и конца отрезка 1: -7 1 Введите координаты начала и конца отрезка 2: 12 44 Отрезки не пересекаются
- Log in to post comments
- 504 reads
vedro-compota
Sun, 12/18/2022 - 15:45
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)