Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы для 28 варианта / Лабораторная работа№5

.docx
Скачиваний:
6
Добавлен:
21.12.2020
Размер:
120.52 Кб
Скачать

Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича

ПРОГРАММИРОВАНИЕ

Отчёт по Лабораторной Работе №5

тема: «ПРОГРАММИРОВАНИЕ ВЛОЖЕННЫХ ЦИКЛОВ»

Санкт-Петербург 2020

А. Постановка задачи(28 ВАРИАНТ)

Требуется составить программу вычисления функции . Формула:

Б. Разработка алгоритма

В данной лабораторной работе рассматривается задача, содержащая несколько циклических алгоритмов. Алгоритм решения данной задачи, следующий:

  1. Вычислить значение p1, то есть:

  2. Вычислить значение s2, то есть:

  3. y =

В программе должен быть предусмотрен ввод исходных данных, к которым относятся переменные xn, xk, m, n; вычисление и вывод y.

В. Таблица идентификаторов

N

Обозначение в задаче

Идентификатор

Назначение

1

m

m

Входные данные

2

n

n

Входные данные

3

y

y

Итоговое значение выражение

4

xn

Начальное значение аргумента

5

xk

Конечное значение аргумента

6

x

x

Текущее значение аргумента

7

-

i

Счётчики цикла

8

-

j

9

-

k

10

p

Промежуточные переменные

11

p1

12

s

Г. Диаграмма Насси – Шнейдермана

(не очень правильно)

Д. Контрольный расчет

Назначение набора данных

Набор данных

Результаты вычислений

Ручные

Машинные

xn

xk

n

m

Argument

Function

Argument

Function

Контрольный набор

1

4

4

2

1

1.7218

1

1.7218

2

1.8710

2

1.8710

3

2.2424

3

2.2424

Рабочий набор

0

5

20

10

-

0.000

43.3759

0.263

67.9403

0.526

91.6200

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

#include <stdio.h>

#include <math.h>

int main()

{

int m, n, k, i, j;

float xn, xk, p, s, p1, y, x, dx;

printf("xn=");

scanf("%f", &xn);

printf("xk=");

scanf("%f", &xk);

printf("m=");

scanf("%d", &m);

printf("n=");

scanf("%d", &n);

printf("Number| Argument | Function |\n");

printf("------|----------|----------|\n");

dx = (xk - xn) / (n - 1);

x = xn;

s = 0;

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

{

s+=sqrt(j);

}

p1 = 1;

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

{

p = 1;

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

{

p *= sqrt(x+k);

}

y = sqrt(fabs(2*x-p+s));

printf("%6d|%10.3f|%10.4f|\n",i, x, y);

x += dx;

}

return 0;

}

Ж. Выводы

Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.