Подсчитать количество точек множества, находящихся внутри этого треугольника - QBasic

Узнай цену своей работы

Формулировка задачи:

Задано случайное множество точек. Найти две точки из заданного множества, расстояние между которыми самое большое и построить треугольник между этими точками и правым верхним углом экрана. Подсчитать количество точек множества, находящихся внутри этого треугольника
Подсчитать количество точек , находящихся внутри этого треугольника

Решение задачи: «Подсчитать количество точек множества, находящихся внутри этого треугольника»

textual
Листинг программы
DEFSNG E, R-S, X-Y
DEFINT F, I-K
OPTION BASE 1
e = .00001
 
DEF FNF (x1, y1, x2, y2, x3, y3)
  FNF = ABS((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2
END DEF
 
 
DEF FNN (x1, y1, x2, y2, x3, y3, x4, y4)
   FNN = 0
   s1 = FNF(x1, y1, x2, y2, x4, y4)
   s2 = FNF(x1, y1, x3, y3, x4, y4)
   s3 = FNF(x2, y2, x3, y3, x4, y4)
   s4 = FNF(x1, y1, x2, y2, x3, y3)
   IF ABS(s1 + s2 + s3 - s4) < e THEN FNN = 1
END DEF
 
RANDOMIZE TIMER
CLS
INPUT "Vvedite N"; n
DIM x(n)
DIM y(n)
 
FOR i = 1 TO n
   x(i) = 10 * RND
   y(i) = 10 * RND
NEXT i
 
r0 = 0
x1 = x(1)
y1 = y(1)
x2 = x(2)
y2 = y(2)
 
FOR i = 1 TO n - 1
   FOR j = i + 1 TO n
      r = SQR((x(i) - x(j)) ^ 2 + (y(i) - y(j)) ^ 2)
      IF r0 < r THEN
         r0 = r
         x1 = x(i)
         y1 = y(i)
         x2 = x(j)
         y2 = y(j)
      END IF
   NEXT j
NEXT i
 
k = 0
FOR i = 1 TO n
   k = k + FNN(x1, y1, x2, y2, 10, 0, x(i), y(i))
NEXT i
 
SCREEN 12
WINDOW SCREEN (-1, -1)-(11, 11)
LINE (0, 0)-(10, 10), 13, B
 
FOR i = 1 TO n
 PSET (x(i), y(i)), 15
NEXT i
 
LINE (x1, y1)-(x2, y2), 11
LINE (x1, y1)-(10, 0), 11
LINE (x2, y2)-(10, 0), 11
PRINT "KOLICHESTVO TOCHEK ="; k - 2
END

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

Код решает задачу подсчета количества точек внутри треугольника, используя метод Гаусса. Список действий:

  1. Ввод числа N, которое определяет количество точек для проверки.
  2. Создание массивов x и y для хранения координат точек.
  3. Инициализация переменных x1, y1, x2, y2, которые будут использоваться для вычисления площади треугольника.
  4. Поиск треугольника с наибольшей площадью среди всех возможных комбинаций точек.
  5. Вычисление значения функции FNN для каждой точки, используя найденные координаты треугольника.
  6. Суммирование значений FNN для всех точек.
  7. Отображение точек на экране и вывод количества точек внутри треугольника.

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


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

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

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