Посчитать количество точек пересечения прямых (заданных коэффициентами своих уравнений) - 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.

Объяснение кода листинга программы

  1. Создается тип line, который представляет прямую с коэффициентами a, b и c.
  2. Определяется функция peres, которая проверяет пересекаются ли две прямые. Она принимает два аргумента типа line и возвращает логическое значение true, если прямые пересекаются, и false в противном случае.
  3. Создается переменная max со значением 100, которое представляет максимальное количество прямых.
  4. Создается массив m типа line, который будет хранить все прямые.
  5. Задаются начальные значения для переменной n, i, j и k.
  6. В цикле repeat считывается количество прямых от 2 до max с помощью функции readln.
  7. Для каждой прямой в массиве m задаются случайные значения коэффициентов a, b и c с помощью цикла for.
  8. Во внутреннем цикле for происходит проверка пересечения двух прямых с помощью функции peres. Если пересечение есть, то значение k увеличивается на единицу.
  9. По окончании внутреннего цикла for выводится количество пересечений с помощью функции writeln.
  10. Цикл repeat завершается с помощью оператора until.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы