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

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

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

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

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

textual
Листинг программы
  1. DEFSNG E, R-S, X-Y
  2. DEFINT F, I-K
  3. OPTION BASE 1
  4. e = .00001
  5.  
  6. DEF FNF (x1, y1, x2, y2, x3, y3)
  7.   FNF = ABS((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2
  8. END DEF
  9.  
  10.  
  11. DEF FNN (x1, y1, x2, y2, x3, y3, x4, y4)
  12.    FNN = 0
  13.    s1 = FNF(x1, y1, x2, y2, x4, y4)
  14.    s2 = FNF(x1, y1, x3, y3, x4, y4)
  15.    s3 = FNF(x2, y2, x3, y3, x4, y4)
  16.    s4 = FNF(x1, y1, x2, y2, x3, y3)
  17.    IF ABS(s1 + s2 + s3 - s4) < e THEN FNN = 1
  18. END DEF
  19.  
  20. RANDOMIZE TIMER
  21. CLS
  22. INPUT "Vvedite N"; n
  23. DIM x(n)
  24. DIM y(n)
  25.  
  26. FOR i = 1 TO n
  27.    x(i) = 10 * RND
  28.    y(i) = 10 * RND
  29. NEXT i
  30.  
  31. r0 = 0
  32. x1 = x(1)
  33. y1 = y(1)
  34. x2 = x(2)
  35. y2 = y(2)
  36.  
  37. FOR i = 1 TO n - 1
  38.    FOR j = i + 1 TO n
  39.       r = SQR((x(i) - x(j)) ^ 2 + (y(i) - y(j)) ^ 2)
  40.       IF r0 < r THEN
  41.          r0 = r
  42.          x1 = x(i)
  43.          y1 = y(i)
  44.          x2 = x(j)
  45.          y2 = y(j)
  46.       END IF
  47.    NEXT j
  48. NEXT i
  49.  
  50. k = 0
  51. FOR i = 1 TO n
  52.    k = k + FNN(x1, y1, x2, y2, 10, 0, x(i), y(i))
  53. NEXT i
  54.  
  55. SCREEN 12
  56. WINDOW SCREEN (-1, -1)-(11, 11)
  57. LINE (0, 0)-(10, 10), 13, B
  58.  
  59. FOR i = 1 TO n
  60.  PSET (x(i), y(i)), 15
  61. NEXT i
  62.  
  63. LINE (x1, y1)-(x2, y2), 11
  64. LINE (x1, y1)-(10, 0), 11
  65. LINE (x2, y2)-(10, 0), 11
  66. PRINT "KOLICHESTVO TOCHEK ="; k - 2
  67. END

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

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

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

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


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

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

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы