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

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

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

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

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

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

тема: Организация функций

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

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

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

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

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

В данном примере искомое выражение для вычисления суммы может быть записано в следующем виде: summa(n1, n2, a2, a1, a0). Сумма S1 может быть вычислена с помощью следующего вызова функции summa(1, n, 3, 0, a), а сумма S2 – с помощью вызова функции summa(2, m, 2, 1, 3).

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

N

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

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

Назначение

n

n

Верхняя граница суммирования

m

m

Верхняя граница суммирования

a

a

Параметр функции

𝑦

y

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

-

s

Сумма

-

n1

Параметр функции summa

-

n2

Параметр функции summa

-

a0

Параметр функции summa

-

a1

Параметр функции summa

-

a2

Параметр функции summa

-

i

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

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

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

Набор данных

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

Ручных

Машинных

n

m

a

y

y

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

7

6

15

2.424

2.424

3

3

6

1.564

1.564

1

5

10

0.103

0.103

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

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int Summ(int n1, int n2, int a2, int a1, int a0);

int main()

{

double y, a;

int n, m;

printf("Enter values for a, n, m:\n");

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

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

printf("y = %.3lf\n", y);

return 0;

}

int Summ(int n1, int n2, int a2, int a1, int a0)

{

int x;

double s = 0.0;

for(x = n1; x <= n2; x ++)

{

s += a2*x*x + a1*x + a0;

return s;

}

Ж. Выводы

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