Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
43
Добавлен:
01.10.2019
Размер:
24.06 Кб
Скачать

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

ПРОГРАММИРОВАНИЕ ВЛОЖЕННЫХ ЦИКЛОВ

Студент гр. ИКПИ-81

Коваленко Л. А.

А. Постановка задачи

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

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

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

  1. Заранее вычислить числитель дроби s1, то есть: . Данное подвыражение функции y не зависит от каких-либо изменений в других частях формулы.

    1. Подсчитать .

    2. Прибавить к нему .

  2. Организовать цикл внутри цикла. Это необходимо, потому что в знаменателе дроби находится операция суммирования, зависящая от переменной i, которая меняется во внешнем "цикле" формулы.

    1. Внутренний цикл будет вычислять знаменатель дроби s2, то есть

.

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

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

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

N

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

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

Назначение

1

x

x

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

2

m

m

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

3

n

n

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

4

y

y

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

5

i

Промежуточные данные

6

j

7

s1

8

s2

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

Решение задачи

Ввод x, m, n

y=0; s1 = 0.5 * x

for (i = 1; i ≤ m; i++)

s1 = s1 + pow((2*i + 1), 2)

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

s2 = x

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

s2 = s2 + pow(i + 2*j, 3)

y = y + (s1 / s2)

Вывод y

Останов


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

В качестве контрольного набора выберем x=0, m=1, n=1.

Результаты вычислений приведены ниже в таблице вычислений.

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

Набор данных

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

x

m

n

Ручные

Машинные

y

y

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

0

1

1

0.333333

0.333333

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

2

20

14

0.268385

0.268385

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

/* Файл Lab5.c */

#include <stdio.h>

#include <math.h>

/*

Лабораторная работа 5

ПРОГРАММИРОВАНИЕ ВЛОЖЕННЫХ ЦИКЛОВ

Студент гр. ИКПИ-81

Коваленко Л. А.

*/

int main(int argc, char **argv)

{

int i, j, n, m;

double x, s1, s2, y=0;

/* Ввод исходных данных */

printf("Input x, m, n: ");

scanf("%lf %d %d", &x, &m, &n);

/* Вычисление числителя */

s1 = 0.5 * x;

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

s1 += pow((2*i + 1), 2);

/* Вычисление знаменателя */

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

s2 = x;

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

s2 += pow(i + 2*j, 3);

y += s1 / s2;

}

/* Вывод результатов */

printf("%.6lf", y);

return 0;

}

Ж. Выводы

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

Соседние файлы в папке Примеры отчетов