Санкт-Петербургский
Государственный Университет
Информационных Технологий,
Механики и Оптики
Отчет
По информатике
Вариант № 23
Подготовил:
Преподаватель:
2004 г.
Задание
Функции графиков
- Для окружности во II четверти(r-радиус окружности, alpha – угол от 0 до 360 гр.)
x=r*Cosd(alpha)-r
y=r*Sind(alpha)+r
- Для окружности во IV четверти(r-радиус окружности, alpha – угол от 0 до 360 гр.)
x=r*Cosd(alpha)+r
y=r*Sind(alpha)-r
- Для квадрата:
x=a-2*r
x=a
y=b+2*r
y=b
где (a; b) – координаты нижней правой вершины квадрата, r - радиус окружностей
Неравенства
Для квадрата:
l1=x>=a-2*r .and. x<=a .and. y>=b .and. y<=b+2*r
Точки окружности в IV-четверти:
l2=(x-r)**2+(y+r)**2<=r*r
Точки окружности в II-четверти:
l3=(x+r)**2+(y-r)**2<=r*r
Для попадания точек в закрашенную область:
l=(l1 .and. l3) .or. ((.not.l1).and. l2)
Программа
Program lab5
Implicit none
Real x,y, a, b, r, alpha
integer :: inside=1, outside=2, square=3, circle1=4, circle2=5
Logical L1,L2,L3,L
Open(inside,file='inside.dat')
Open(outside,file='outside.dat')
Open(square,file='square.dat')
Open(circle1,file='circle1.dat')
Open(circle2,file='circle2.dat')
Write(*,*) "input R of circles and (x,y) of square right-bottom corner's top:"
Read(*,*) r, a, b
Do x=a,a-2*r,-0.025
Write(square,*) x,b
Write(square,*) x,b+2*r
enddo
Do y=b,b+2*r,0.25
Write(square,*) a,y
Write(square,*) a-2*r,y
enddo
Do alpha=0,360,2
x=r*Cosd(alpha)-r
y=r*Sind(alpha)+r
Write(circle1,*) x,y
Enddo
Do alpha=0,360,2
x=r*Cosd(alpha)+r
y=r*Sind(alpha)-r
Write(circle2,*) x,y
Enddo
do y=-3*r, 3*r, 6*r/68.
do x=-3*r, 3*r, 6*r/68.
l1=x>=a-2*r .and. x<=a .and. y>=b .and. y<=b+2*r
l2=(x-r)**2+(y+r)**2<=r*r
l3=(x+r)**2+(y-r)**2<=r*r
l=(l1 .and. l3) .or. ((.not.l1).and. l2)
if(l) then
Write(inside,*) x,y
else
Write(outside,*) x,y
end if
end do
end do
end
Блок-Схема
Результат