Количество точек в круге - QBasic
Формулировка задачи:
Дано случайное количество точек. Радиус круга задается вручную. Как узнать общее количество точек, которые попали в круг?
вот набросок:
как дальше не знаю, подскажите как решить?
Решение задачи: «Количество точек в круге»
textual
Листинг программы
RANDOMIZE TIMER xmax = 640: ymax = 480 SCREEN 12 WIDTH 80, 30 DO CLS cx = xmax / 2: cy = ymax / 2 DO PRINT "radius kruga ot 1 do "; ymax \ 2; " (0-vyhod) = "; : INPUT "", r IF r = 0 THEN SCREEN 0, 0, 0, 0: END LOOP UNTIL (r > 0) AND (r <= ymax \ 2) n = INT(RND(7) * 2000) CLS 2 CIRCLE (cx, cy), r, 14 kol = 0 FOR i = 1 TO n x = RND * xmax y = RND * ymax PSET (x, y), 12 IF SQR((cx - x) ^ 2 + (cy - y) ^ 2) < r THEN kol = kol + 1 NEXT PRINT "Radius = "; r PRINT "Tochek ="; n: PRINT "Tochek v kruge "; kol LOCATE 30, 1: PRINT "<Esc> - vyhod..."; DO: Choice$ = INKEY$: LOOP WHILE Choice$ = "" LOOP UNTIL Choice$ = CHR$(27) SCREEN 0, 0, 0, 0 END
Объяснение кода листинга программы
RANDOMIZE TIMER
— данная команда позволяет генерировать случайные числа с использованием текущего времени как источника энтропии.xmax = 640: ymax = 480
— определение максимальных значений координат экрана.SCREEN 12
— выбор экрана с координатами 1280x1024.WIDTH 80, 30
— установка размеров окна программы.DO
— начало бесконечного цикла.CLS
— очистка экрана.cx = xmax / 2: cy = ymax / 2
— определение координат центра круга.DO
— начало цикла определения радиуса круга.PRINT
radius kruga ot 1 do; ymax \ 2;
(0-vyhod) =; : INPUT ``, r
— запрос ввода радиуса круга.IF r = 0 THEN SCREEN 0, 0, 0, 0: END
— проверка ввода, выход из программы при вводе нулевого радиуса.LOOP UNTIL (r > 0) AND (r <= ymax \ 2)
— условие цикла, пока радиус больше нуля и меньше половины максимальной высоты экрана.n = INT(RND(7) * 2000)
— генерация случайного числа для определения количества точек внутри круга.CLS 2
— очистка экрана с параметром 2 (без закрашивания каретки).CIRCLE (cx, cy), r, 14
— рисование круга с заданными координатами и радиусом.kol = 0
— инициализация счётчика точек внутри круга.FOR i = 1 TO n
— начало цикла для рисования точек внутри круга.x = RND * xmax
— генерация случайной координаты по горизонтали.y = RND * ymax
— генерация случайной координаты по вертикали.PSET (x, y), 12
— рисование точки с заданными координатами и размером 12.IF SQR((cx - x) ^ 2 + (cy - y) ^ 2) < r THEN kol = kol + 1
— проверка попадания точки внутрь круга по заданному радиусу.NEXT
— переход к следующей итерации цикла.PRINT
Radius =; r
— вывод значения радиуса круга.PRINT
Tochek =; n
— вывод количества точек, определенных в круге.PRINT
Tochek v kruge; kol
— вывод количества точек, попавших внутрь круга.LOCATE 30, 1: PRINT
- vyhod...`` — вывод строки с инструкцией по выходу из программы. - `DO: Choice$ = INKEY$: LOOP WHILE Choice$ = ``` — начало цикла ожидания нажатия клавиши для выхода из программы.
SCREEN 0, 0, 0, 0
— очистка экрана и возврат в основную программу.END
— окончание программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д