Подсчитать количество точек множества, находящихся внутри этого треугольника - 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
Объяснение кода листинга программы
Код решает задачу подсчета количества точек внутри треугольника, используя метод Гаусса. Список действий:
- Ввод числа N, которое определяет количество точек для проверки.
- Создание массивов x и y для хранения координат точек.
- Инициализация переменных x1, y1, x2, y2, которые будут использоваться для вычисления площади треугольника.
- Поиск треугольника с наибольшей площадью среди всех возможных комбинаций точек.
- Вычисление значения функции FNN для каждой точки, используя найденные координаты треугольника.
- Суммирование значений FNN для всех точек.
- Отображение точек на экране и вывод количества точек внутри треугольника.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д