Определить, попадает ли каждая из точек в указанную область, и найти площадь указанной области - Pascal ABC
Формулировка задачи:
пусть задана область на плоскости(вот так показанно на рисунке на координатной плоскости закрашены первая и четвёртая части круга), ограниченная диапазоном аргумента [-10;10] и диапазонам значений [-10;10]. С клавиатуры вводится радиус окружности (целое число) и координаты первой точки ( вещественые значения). Вторая точка задается случайными координатами (вещественные значения), с помощью генерации случайных чисел. Необходимо определить, попадает ли каждая из точек в указанную область и найти площадь указанной области, вывести только целую часть площади.
Решение задачи: «Определить, попадает ли каждая из точек в указанную область, и найти площадь указанной области»
textual
Листинг программы
uses graphABC,crt; var i,x0,y0,r,p:integer; m,xa,ya,xb,yb:real; s:string; begin randomize; repeat write('Введите радиус, целое число от 1 до 10 r='); readln(r); until r in [1..10]; repeat writeln('Введите координаты точки А, вещественные числа от 1 до 10'); readln(xa,ya); until(xa>=-10)and(xa<=10)and(ya>=-10)and(ya<=10); xb:=-10+20*random; yb:=-10+20*random; setwindowsize(500,500); centerwindow; clrscr; hidecursor; x0:=windowwidth div 2; y0:=x0; rectangle(40,40,windowwidth-40,windowheight-40); line(40,y0,2*x0-40,y0); line(x0,40,x0,2*y0-40); m:=(x0-60)/10; setpencolor(clBlue); setbrushstyle(bsClear); circle(x0,y0,round(r*m)); floodfill(x0+5,y0-5,clLtGray); floodfill(x0+5,y0+5,clLtGray); setbrushstyle(bsClear); for i:=1 to 10 do begin line(x0+round(i*m),y0+3,x0+round(i*m),y0-3); line(x0-round(i*m),y0+3,x0-round(i*m),y0-3); str(i,s); textout(x0+round(i*m),y0+10,s); textout(x0-round(i*m),y0+10,'-'+s); line(x0+3,y0-round(i*m),x0-3,y0-round(i*m)); line(x0+3,y0+round(i*m),x0-3,y0+round(i*m)); textout(x0-20,y0-round(i*m),s); textout(x0-25,y0+round(i*m),'-'+s); end; textout(2*x0-50,y0-15,'X'); textout(x0+5,45,'Y'); textout(x0+5,y0+10,'0'); setbrushstyle(bsSolid); setbrushcolor(clBlue); circle(x0+round(xa*m),y0-round(ya*m),3); circle(x0+round(xb*m),y0-round(yb*m),3); setbrushstyle(bsClear); textout(x0+round(xa*m)+5,y0-round(ya*m),'A'); textout(x0+round(xb*m)+5,y0-round(yb*m),'B'); if(xa>=0)and(xa*xa+ya*ya<=r*r) then s:='Точка А попадает в закрашенную область' else s:='Точка А не попадает в закрашенную область'; textout(40,0,s); if(xb>=0)and(xb*xb+yb*yb<=r*r) then s:='Точка B попадает в закрашенную область' else s:='Точка B не попадает в закрашенную область'; textout(40,20,s); p:=trunc(pi*r*r/2); textout(40,470,'Площадь закрашенной области='+inttostr(p)); end.
Объяснение кода листинга программы
- Используется библиотека graphABC и функция crt для создания окна и отображения графических элементов.
- Переменные i, x0, y0, r, p определены как целочисленные и вещественные.
- Координаты точки А (xa, ya) вводятся с клавиатуры.
- Радиус (r) вводится с клавиатуры.
- Диапазон координат точки А и B (x0, y0) и (xb, yb) вычисляется случайным образом.
- Создается окно размером 500x500 пикселей.
- Центрируется окно.
- Очищается экран.
- Вычисляется среднее значение координат точки А (m).
- Строка
A
иB
рисуется на экране. - Проверяется, попадает ли точка А в закрашенную область.
- Вычисляется площадь закрашенной области.
- Выводится результат на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д