Определить, попадает ли каждая из точек в указанную область, и найти площадь указанной области - 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.

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

  1. Используется библиотека graphABC и функция crt для создания окна и отображения графических элементов.
  2. Переменные i, x0, y0, r, p определены как целочисленные и вещественные.
  3. Координаты точки А (xa, ya) вводятся с клавиатуры.
  4. Радиус (r) вводится с клавиатуры.
  5. Диапазон координат точки А и B (x0, y0) и (xb, yb) вычисляется случайным образом.
  6. Создается окно размером 500x500 пикселей.
  7. Центрируется окно.
  8. Очищается экран.
  9. Вычисляется среднее значение координат точки А (m).
  10. Строка A и B рисуется на экране.
  11. Проверяется, попадает ли точка А в закрашенную область.
  12. Вычисляется площадь закрашенной области.
  13. Выводится результат на экран.

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


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

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

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