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

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

ОРГАНИЗАЦИЯ ФУНКЦИЙ

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

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

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

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

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

В данной лабораторной работе необходимо вычислить значение величины, в расчетную формулу которой входит несколько "похожих" сумм. Целесообразно создать функцию пользователя для вычисления этих сумм. Исходя из операций суммирования, представленных в функции y, можно составить следующую пользовательскую функцию Summ:

.

Таким образом, значение функции вычисляется следующим образом:

Передаваемый в функцию параметр x будет выполнять роль счётчика цикла.

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

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

N

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

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

Назначение

1

a

a

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

2

m

m

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

3

n

n

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

4

y

y

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

5

x

Промежуточные данные пользовательской функции

6

p

7

a1

8

a2

9

res

10

Функция пользователя

Summ(x, p, a1, a2)

Функция пользователя

0

Г. Схемы алгоритма

Начало

Ввод a, n, m

5

1

Вывод y

Останов

3

0

Конец

2

4

1

2

3

4

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

В качестве первого контрольного набора выберем a=5, n=4, m=2; второго — a=1, n=3, m=3; третьего — a=0, n=5, m=5.

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

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

Набор данных

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

a

n

m

Ручные

Машинные

y

y

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

5

4

2

1.038339

1.038339

1

3

3

0.111617

0.111617

0

5

5

0

0

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

/* Файл Lab6.c */

#include <stdio.h>

#include <math.h>

/*

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

ОРГАНИЗАЦИЯ ФУНКЦИЙ

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

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

*/

/* Описание функции */

double Summ(int, int, double, double);

int main(int argc, char **argv)

{

int n, m;

double a, y;

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

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

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

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

y = ( a * Summ(3, n, 2, 1) ) / (1 + 2*Summ(1, m, 3, a) + 3*Summ(3, n, 1, 3));

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

return 0;

}

/* Определение функции */

double Summ(int x, int p, double a1, double a2) {

double res=0.0;

for (x; x <= p; x++)

res += pow(a1*x + a2, 2);

return res;

}

Ж. Выводы

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

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