лабы для 28 варианта / Лабораторная работа№6_1
.docxСанкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича
ПРОГРАММИРОВАНИЕ
Отчёт по Лабораторной Работе №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;
}
Ж. Выводы
Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.