Санкт-Петербургский

Государственный Университет

Информационных Технологий,

Механики и Оптики

Отчет

По информатике

Вариант № 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

Результат