Санкт-Петербургский
Государственный Университет
Информационных Технологий,
Механики и Оптики
Отчет
По информатике
Вариант № 19
Подготовил:
Преподаватель:
2004 г.
Задание
Функции графиков
- Для дуги окружности в I четверти(r-радиус окружности, alpha – угол от 90 до 0 гр.)
x=r*Cosd(alpha)
y=r*Sind(alpha)
- Для горизонтальной прямой в I четверти (r-радиус):
y=2*r
- Для вертикальной прямой в I четверти (r-радиус):
x=2*r
Неравенства
l1=x<=2*r .and. x>=0 .and. y>=0 .and. y<=2*r !внутри квадрата
l2=x*x+y*y>=r*r .and. x>=0 .and. y>=0 !вне окружности и в 1-ой четверти
l3=x<=0 .and. y<=0 .and. y>=-x-2*r !внутри треугольника
l=l1.and.l2.or.l3 ! точка внутри области
Программа
Program lab5
Implicit none
Real x,y,r,alpha
integer :: inside=1,outside=2,circle=3,line1=4,line2=5,line3=6
Logical L1,L2,L3,L
Open(inside,file='inside.dat') ! точки внутри области
Open(outside,file='outside.dat')! точки вне области
Open(line1,file='line1.dat') ! точки горизонтальной прямой
Open(line2,file='line2.dat')! точки вертикальной прямой
Open(line3,file='line3.dat')! точки наклонной прямой
Open(circle,file='circle.dat')! точки дуги окружности
Write(*,*) "input R:"
Read(*,*) r
!Часть 1 генерирование точек графиков ф-ий
Do x=0,2*r,0.25
Write(line1,*) x,2*r
enddo
Do y=0,2*r,0.25
Write(line2,*) 2*r,y
enddo
Do x=-2*r,0,0.25
Write(line3,*) x,-2*r-x
enddo
Do alpha=90,0,-2
x=r*Cosd(alpha)
y=r*Sind(alpha)
Write(circle,*) x,y
Enddo
!Часть 2 цикл по X внутри цикла по Y генерирует точки прямоугольника
do y=-3*r, 3*r, 6*r/68.
do x=-3*r, 3*r, 6*r/68.
l1=x<=2*r .and. x>=0 .and. y>=0 .and. y<=2*r !внутри квадрата
l2=x*x+y*y>=r*r .and. x>=0 .and. y>=0 !вне окружности и в 1-ой четверти
l3=x<=0 .and. y<=0 .and. y>=-x-2*r !внутри треугольника
l=l1.and.l2.or.l3 ! точка внутри области
if(l) then
Write(inside,*) x,y
else
Write(outside,*) x,y
end if
end do
end do
end
Результат