Программирование ветвящихся вычислительных процессов

Страницы работы

2 страницы (Word-файл)

Содержание работы

Лабораторная работа №2

Программирование ветвящихся вычислительных процессов

Задание: требуется составить программу, которая определить попадает ли точка в  заданную область на плоскости.

Исходные функции

1.

2.

На плоскости   задана область определения, необходимо узнать, попадает ли точка, с координатами  в эту область определения или нет.

Если попадает, значит необходимо вычислить функцию и найти переменную, значение которой будет доказывать попадание или непопадание в область определения. В противном случае высчитать, с новой переменной.

Функция f1 задана

Функция f2 задана

Область ограниченна в первой и четвертой четвертях прямыми: в первой четверти, в четвертой – . Во второй четверти уравнением окружности с центром в начале координат:

Зададим точку с координатами  и запишем, что она попадает в область D, если  и , и  или  и .

Точка не попадает, если  и  или  и , или , и , или  и .

Опишем переменные,  которые будем использовать в программе:

 – Логическая переменная (true-значение попадания; false-значение непопадания).

 - свободные переменные

 - переменная, значение функции

 - переменная цикла

Текст программы

Program L2

Logical::C

Open(1,file='inp.txt')

Open(2,file='out.txt')

write(2,*)' x  y  z  c  m '

Do i=1,6

Print*,'x,y-?';read(1,*)x,y

c=x>0..and.y>0..and.y<-x+2.&

.or.x>0..and.y<0..and.y>x-2.&

.or.x<0..and.y>0..and.x**2+y**2<9

if(C)then

Print*,'YES';z=(2*x+atan(y));m=0

else

print*,'NO';z=(atan((1./x**2)+(1./y**2)));m=1

endif

write(2,'(3F12.3,L7,I7)')x,y,z,c,m

Enddo

End

В результате проверки программы, получаем данные, приведенные в таблице.

Таблица

.500

1.000

1.785

T

0

1.000

-.500

1.536

T

0

-1.000

2.000

-.893

T

0

3.000

3.000

.219

F

1

2.000

2.000

.464

F

1

2.000

-2.000

.464

F

1

Задача на защиту

Для заданных значений  найти

Текст программы

Program L2

Real a,b,c

Do i=1,9

Print*,'a,b,c-?';read*,a,b,c;

If(a<b.and.a>c)then; print*, ' z=a';else;print*, ' z=c'

Endif

If(b<a.and.b>c)then;print*,' z=b';else;print*,' z=c';

Endif

Enddo

End

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Отчеты по лабораторным работам
Размер файла:
110 Kb
Скачали:
0