Язык Си. Лабораторные работы / Примеры отчетов / Lab6
.docx
Лабораторная работа №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;
}
Ж. Выводы
Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.