Структурированная запись алгоритма 25.1 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Структурированная запись алгоритма 25.1



1. Задание начального значения x=1

2. Повторять пока x <=3.1

2.1. Задание начальных значений переменным для вычисления суммы z =0 и степени х stx =1

2.2. Повторять для i =1, 8

2.2.1. Вычисление очередной степени xi stx = stx * x

2.2.2. Прибавление очередного слагаемого z = z + cos (stx)

Конец цикла по i

3. Вывод значения х и полученной суммы z

4. Увеличение x на значение шага x = x +0.2

Конец цикла по x

Схема алгоритма

Программа на языке Си

#include <stdio.h>

#include <conio.h>

 

int main()

{

int i;

double z,x,stx;

for(x=1;x<=3.1;x+=0.2)

{ z=0;

stx=1;

for (i=1;i<=8;++i)

{

  stx*=x;

  z+=stx;

}

printf("x=%.1lf z=%6.3lf\n",x,z);

}

 getch();

return 0;

}

Программа на языке Паскаль

Program main_25_1;

Var

i:integer;

z,x,stx:real;

begin

x:=1;

while x<=3.1 do

begin

z:=0;

stx:=1;

for i:=1 to 8 do

begin

    stx:=stx*x;

     z:=z+cos(stx);

end;

writeln('x=',x:3:1,' z=',z:6:3);

x:=x+0.2;

end

end.

Программа на языке Фортран

Program main_25_1

Implicit none

integer i

real z,x,stx

x=1

 C1: do while (x<=3.1)

  z=0

  stx=1

C2: do i=1,8

     stx=stx*x

    z=z+cos(stx)

    enddo C2

   print '(A,F3.1,A,F6.3)','x=',x,' z=',z

  x=x+0.2

 enddo C1

end program

Программа на языке Python

from math import cos

x = 1

while x <= 3.1:

z = 0

stx = 1

for i in range(1, 9):

# i = 1,..., 8 -- 8 итераций

    stx = stx * x

    z = z + cos (stx)

print("x = {0}, z = {1}".format(x,z))

x = x + 0.2

Программа в системе Матлаб

x=1;

while x<=3.1

z=0;

stx=1;

for i=1:8

stx=stx*x;

z=z+cos(stx);

end

disp(sprintf('x=%3.1f z=%6.3f',x,z))

x=x+0.2;

end

 

Второй вариант

Можно организовать внешний цикл, вычислив количество его повторений, определяющееся количеством значений х на заданном отрезке от xn до xk с шагом h. Это легко сделать, используя формулу . При наших значениях x на отрезке от xn =1 до xk =3 с шагом h =0.2   =11. Зададим начальное значение x (x = x n). Организуем цикл с параметром по переменной k (k =1, 11). Действия внутри этого цикла будут такими же, как в первом варианте решения этой задачи. При k =1 будет вычислена сумма 8 слагаемых и выведено значение z для х=1, затем значение х увеличивается на значение шага х=х+ h, и то же самое будет выполнено при k=2 для х=1.2 и т.д., всего 11 раз.

Структурированная запись алгоритма 25.2

1. Задание исходных данных и начального значения x: xn =1, xk=3, h =0.2, x = xn,

2. Вычисление количества значений x на интервале  от xn до xk

3. Повторять для j =1, k

3.1. Задание начальных значений переменных для вычисления суммы z =0 и степени х stx =1

3.2. Повторять для i =1, 8

3.2.1. Вычисление очередной степени xi stx = stx * x

3.2.2. Прибавление очередного слагаемого z = z + cos (stx)

Конец цикла по i

3.3. Вывод значения х и суммы z

3.4. Увеличение x на значение шага x = x + h

Конец цикла по j

Схема алгоритма

Программа на языке Си

#include <stdio.h>

int main()

{

int i,j,k;

 double z,x,stx, 

   xn=1,xk=3,h=.2;

 k=ceil((xk-xn)/h)+1;

 x=xn;

 for(j=1;j<=k;j++)

 { z=0;

stx=1;

for (i=1;i<=8;++i)

{

stx*=x;

z+=cos(stx);

}

printf("x=%.1lf z=%6.3lf\n",x,z);

x+=h;

}

return 0;

}

Программа на языке Паскаль

Program main_25_2;

Var

i, j, k: integer;

z, x, stx, xn, xk, h: real;

begin

xn:=1; xk:=3; h:=0.2; x:=xn;

k:=round((xk-xn)/h)+1;

for j:=1 to k do

begin

z:=0;

stx:=1;

for i:=1 to 8 do

begin

    stx:=stx*x;

    z:=z+cos(stx);

end;

writeln('x=', x:3:1,' z=', z:6:3);

x:=x+h

end;

end.

Программа на языке Фортран

Program main_25_2

Implicit none

integer i, k, j

real z, x, stx, xn/1/, xk/3/, h/0.2/

k = nint((xk-xn)/h)+1

x = xn

C1: do j=1,k

z=0

stx=1

C2: do i=1,8

        stx=stx*x

        z=z+cos(stx)

enddo C2

print '(A,F3.1,2x,A,F6.3)','x=',x,'z=',z

x=x+h

enddo C1

end program

Программа на языке Python

from math import cos

xn=1; xk=3; h=0.2; x = xn

k = int((xk - xn) / h) + 1

# Получение целой части результата деления,

# поскольку k -- целое (количество значений x)

for j in range(1, k + 1):

# j = 1,..., k -- k итераций

z = 0

stx = 1

for i in range(1, 9):

# i = 1,..., 8 -- 8 итераций

stx = stx * x

z = z + cos (stx)

print("x = {0}, z = {1}".format(x,z))

x = x + h

Программа в системе Матлаб

xn=1; xk=3; h=0.2; x=xn;

k=(xk-xn)/h+1;

for j=1:k

z=0;

stx=1;

for i=1:8

stx=stx*x;

z=z+cos(stx);

end

disp(sprintf('x=%3.1f z=%6.3f',x,z))

x=x+h;

end

 



Поделиться:


Последнее изменение этой страницы: 2021-04-12; просмотров: 72; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.41.187 (0.007 с.)