Посчитать количество точек пересечения прямых (заданных коэффициентами своих уравнений) - Pascal ABC
Формулировка задачи:
Задано множество прямых на плоскости(коэффициентами своих уравнений). Посчитать количество точек пересечения этих прямых.
Решение задачи: «Посчитать количество точек пересечения прямых (заданных коэффициентами своих уравнений)»
textual
Листинг программы
type line=record //тип прямая a,b,c:integer;//ее коэффициенты end; //функция определяем пересекаются ли 2 линии function peres(p1,p2:line):boolean; begin result:=p1.a*p2.b-p2.a*p1.b<>0 //если произведение a1*b2 <> произведению a2*b1 //то прямые пересекаются(не параллельны и не совпадают) end; const max=100; //макс кол. прямых var m:array[1..max] of line;//массив прямых n,i,j,k:integer; begin randomize; repeat write('Количество прямых от 2 до ',max,' n='); readln(n); until n in [2..max]; for i:=1 to n do //задаем случайные значения коэффициентов begin m[i].a:=-5+random(11); m[i].b:=-5+random(11); m[i].c:=-5+random(11); end; k:=0; //количество пересечений for i:=1 to n-1 do//все прямые от 1 до предпоследней for j:=i+1 to n do //все что впереди if peres(m[i],m[j]) then inc(k);//если пересекаются, считаем writeln('Количество пересечений=',k) end.
Объяснение кода листинга программы
- Создается тип
line
, который представляет прямую с коэффициентамиa
,b
иc
. - Определяется функция
peres
, которая проверяет пересекаются ли две прямые. Она принимает два аргумента типаline
и возвращает логическое значениеtrue
, если прямые пересекаются, иfalse
в противном случае. - Создается переменная
max
со значением 100, которое представляет максимальное количество прямых. - Создается массив
m
типаline
, который будет хранить все прямые. - Задаются начальные значения для переменной
n
,i
,j
иk
. - В цикле
repeat
считывается количество прямых от 2 доmax
с помощью функцииreadln
. - Для каждой прямой в массиве
m
задаются случайные значения коэффициентовa
,b
иc
с помощью циклаfor
. - Во внутреннем цикле
for
происходит проверка пересечения двух прямых с помощью функцииperes
. Если пересечение есть, то значениеk
увеличивается на единицу. - По окончании внутреннего цикла
for
выводится количество пересечений с помощью функцииwriteln
. - Цикл
repeat
завершается с помощью оператораuntil
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д