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

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

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

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

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

Отчёт по Лабораторной Работе №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>

void sum(int n1, int n2, int a2, int a1, int a0, double *s);

int main() {

int n, m;

double y, a, s1=0, s2=0;

printf("n=");

scanf("%d", &n);

printf("m=");

scanf("%d", &m);

printf("a=");

scanf("%lf", &a);

sum(1, n, 3, 0, a, &s1);

sum(2, m, 2, 1, 3, &s2);

y=(double)(1+s1)/(2+s2);

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

return 0;

}

void sum(int n1, int n2, int a2, int a1, int a0, double *s)

{

*s=0;

for (int i=n1; i<=n2; i++)

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

}

Ж. Выводы

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