Урок 16 Задача 2
Primary tabs
Вспомогательная задача (можно решить, просто используя одномерные массивы):
Пользователь вводит 4 целых числа, считаем все их координатами на прямой, а именно:первые два числа - начало и конце отрезка 1
вторые два - начало и конец отрезка 2Задача: напишите подпрограмму, которая определит пересекаются ли данные отрезки.
Решение:
program u16z02;
type newArr = array[1..4] of integer;
var a:newArr;
i,n: integer;
s: string;
function otrezki(arr:newArr): string;
begin
if (arr[1]>arr[3])and(arr[2]<arr[4]) then
result:='Otrezki peresekayutsya'
else
if (arr[1]<arr[3])and(arr[2]>arr[4]) then
result:='Otrezki peresekayutsya'
else
if (arr[1]<arr[3])and(arr[2]>arr[3])and(arr[2]<arr[4]) then
result:='Otrezki peresekayutsya'
else
if (arr[2]>arr[4])and(arr[1]<arr[4])and(arr[1]>arr[3]) then
result:='Otrezki peresekayutsya'
else
result:='Otrezki ne peresekayutsya';
end;
begin
for i:=low(a) to high(a) do
begin
write('Vvedite celoe chislo: ');
readln(n);
a[i]:=n;
end;
writeln();
s:=otrezki(a);
writeln(s);
readln();
end.
Консоль:
Vvedite celoe chislo: 1 Vvedite celoe chislo: 5 Vvedite celoe chislo: 2 Vvedite celoe chislo: 7 Otrezki peresekayutsya
- Log in to post comments
- 1389 reads
vedro-compota
Wed, 06/15/2022 - 19:43
Permalink
Для случая если вложенность
_____________
матфак вгу и остальная классика =)
avast36
Tue, 07/05/2022 - 09:38
Permalink
Исправил
Решение:
program u16z02; type newArr = array[1..4] of integer; var a:newArr; i,n: integer; s: string; function otrezki(arr:newArr): string; begin if (arr[2]<arr[3]) then result:='Otrezki ne peresekayutsya' else if (arr[1]>arr[4]) then result:='Otrezki ne peresekayutsya' else result:='Otrezki peresekayutsya' end; begin for i:=low(a) to high(a) do begin write('Vvedite celoe chislo: '); readln(n); a[i]:=n; end; writeln(); s:=otrezki(a); writeln(s); readln(); end.Консоль:
vedro-compota
Wed, 07/06/2022 - 20:41
Permalink
Возвращать boolean для случая
Возвращать boolean для случая пересечения (алгоритм любой рабочий)
_____________
матфак вгу и остальная классика =)
avast36
Thu, 07/07/2022 - 09:19
Permalink
Исправил
Решение:
program u16z02; type newArr = array[1..4] of integer; var a:newArr; i,n: integer; function otrezki(arr:newArr): boolean; begin if (arr[2]<arr[3]) then result:=FALSE else if (arr[1]>arr[4]) then result:=FALSE else result:=TRUE; end; begin for i:=low(a) to high(a) do begin write('Vvedite celoe chislo: '); readln(n); a[i]:=n; end; writeln(); if otrezki(a) then writeln('otrezki peresekayutsya') else writeln('otrezki ne peresekayutsya'); readln(); end.