Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
17 внимательно прочитай и дополни свои данные.docx
Скачиваний:
4
Добавлен:
22.11.2019
Размер:
76.35 Кб
Скачать

1. Анализ заданной функции и разработка структурной схемы алгоритма по её вычислению

С огласно заданию необходимо вычислить заданную сложную функцию,

yi =

- a +j, при z<5,

sin(b) + j + a, при z≥5;

где j=1,2,3,…,m; i=1,2…,n; ; xi – массив чисел от 1..n; x1=1,2; x2=4; x3=-27*10-2; a=aнач + h;

Значения параметров: m=15; h=0,8; aнач=-2; b=π/3; n=3.

Значение вычислить по подпрограмме.

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

, a=aнач + h .

При организации циклических процессов рекомендуется выносить за пределы цикла те вычисления, которые достаточно выполнить один раз, что уменьшает затраты времени на решение задачи.

Определив промежуточные переменные необходимо использовать разветвление на два направления, определяющее рабочую формулу на данном шаге. С учётом данных тезисов разрабатывается структурная блок-схема алгоритма программы, которая представлена на рисунке 1.1.

Б

Начало

j:=1,m

x1[j]:=j;

z:=1/(0.5*j)*sumx;

1

4

5

3

4

ЛОК-СХЕМА АЛГОРИТМА ПРОГРАММЫ

А

z>=5

Да

Нет

y1[j]:=sumx-a+j

y1[j]:=sin(b)+j+a

6

7

8

y1[j]:=ln(abs(x1[j]-z[j]))+sumc-b

a:=an+h;

9

2. Программирование отдельных блоков и структур алгоритмов

1) Начало программы, объявление необходимых констант и переменных (блок 1)

{ $n+}

uses graph;

const

m=15;

n=3;

h=0.8;

an=-2;

b=pi/3;

x:array[1..3]of extended=(1.2,4,-0.27);

var

x1,y1:array[1..m]of extended;

i,j:integer;

z,sumx,a:extended;

graphmode,graphdriver:integer;

begin

2 ) Процедура вычисления значения

procedure procx;

begin

sumx:=0;

for i:=1 to n do sumx:=sumx+x[i];

end;

3) Начало основного цикла j для расчета значений массивов x1,y1, расчет необходимых переменных (блоки 4-5)

for j:=1 to m do

begin

x1[j]:=j;

z:=1/(0.5*j)*sumx;

4) Условие для расчета значений массива y1(блоки 6-8)

if z>=5 then y1[j]:=sumx-a+j

else y1[j]:=sin(b)+j+a;

5 ) Расчет переменных a,b (блок 9)

a:=an+h;

6 ) Открытие доступа к файлу вывода и вывод результатов значений массивов x1,y1 в файл. Конец программы. (блоки 10-13)

assign(output,'out.txt');

rewrite(output);

writeln('X':5,'Y':7);

for i:=1 to m do writeln(x1[i]:7:3,' ',y1[i]:7:3);

end.

3. Полная программа в соответствии с алгоритмом

Полная рабочая программа написанная по блок-схеме алгоритма представленного на рисунке 1.1 будет иметь следующий вид:

{$n+}

uses graph;

const

m=15;

n=3;

h=0.8;

an=-2;

b=pi/3;

x:array[1..3]of extended=(1.2,4,-0.27);

var

x1,y1:array[1..m]of extended;

i,j:integer;

z,sumx,a:extended;

graphmode,graphdriver:integer;

procedure procx;

begin

sumx:=0;

for i:=1 to n do sumx:=sumx+x[i];

end;

begin

graphdriver:=detect;

initgraph(graphdriver,graphmode,'d:\bp\bgi');

line(0,240,640,240);

line(630,230,640,240);

line(630,245,640,240);

line(320,0,320,480);

line(315,10,320,0);

line(325,10,320,0);

outtextxy(620,225,'x');

outtextxy(330,15,'y');

outtextxy(410,250,'100');

outtextxy(510,250,'200');

outtextxy(610,250,'300');

outtextxy(210,250,'-100');

outtextxy(110,250,'-200');

outtextxy(10,250,'-300');

outtextxy(280,40,'200');

outtextxy(285,140,'100');

outtextxy(285,340,'-100');

outtextxy(280,440,'-200');

setcolor(4);

x1[1]:=0;

z:=0;

a:=an;

procx;

for j:=1 to m do

begin

x1[j]:=j;

z:=1/(0.5*j)*sumx;

if z>=5 then y1[j]:=sumx-a+j

else y1[j]:=sin(b)+j+a;

a:=an+h;

end;

for j:=2 to m do

begin

line(j-1+320,trunc(-y1[j-1])+240,j+320,trunc(-y1[j])+240);

end;

readln;

assign(output,'out.txt');

rewrite(output);

writeln('X':5,'Y':7);

for i:=1 to m do writeln(x1[i]:7:3,' ',y1[i]:7:3);

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]