Язык Си. Лабораторные работы / Примеры отчетов / Lab4
.docx
Лабораторная работа №4
ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ
ВЫЧИСЛЕНИЯ ПО РЕККУРЕНТНЫМ ФОРМУЛАМ
Студент гр. ИКПИ-81
Коваленко Л. А.
А. Постановка задачи
Требуется составить программу вычисления функции , содержащей произведение. Формула:
Б. Разработка алгоритма
В данной лабораторной работе рассматривается задача, содержащая линейный и циклический алгоритмы.
В случае с следует использовать линейный алгоритм.
В случае с — циклический.
Таким образом, задача сводится к двум основным действиям:
-
Вычислить значение циклического алгоритма: .
-
Прибавить к полученному значению (в первом пункте) .
Циклический алгоритм осуществляется с использованием цикла for (удобного для данной задачи). Счетчик цикла — i (причем из условий задачи понятно, что начальное ).
Если значение циклического алгоритма равно нулю (например, при ), то необходимо подсчитать значение линейного алгоритма.
В программе должен быть предусмотрен ввод исходных данных, к которым относятся переменные n, x; вычисление и вывод y.
В. Таблица идентификаторов
N |
Обозначение в задаче |
Идентификатор |
Назначение |
1 |
n |
n |
Входные данные |
2 |
x |
x |
Входные данные |
3 |
y |
y |
Выходные данные |
4 |
– |
i |
Промежуточные данные |
Г. Схема алгоритма
Начало 0
1
Ввод
n,
x Останов 9 3 4 Вывод
y 6 n>=6 2 Да Нет 5 7 8
Д. Контрольный расчет
В качестве первого контрольного набора выберем n=7, x=0, второго — n=5, x=0.
Результаты вычислений приведены ниже в таблице вычислений.
Назначение набора данных |
Набор данных |
Результаты вычислений |
||
n |
x |
Ручные |
Машинные |
|
y |
y |
|||
Контрольный набор |
7 |
0 |
0.954 |
0.954 |
5 |
0 |
0 |
0 |
|
Рабочий набор |
30 |
9 |
861457.401 |
861457.401 |
Е. Программа на языке Си
/* Файл Lab4.c */
#include <stdio.h>
#include <math.h>
/*
Лабораторная работа 4
ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ
ВЫЧИСЛЕНИЯ ПО РЕККУРЕНТНЫМ ФОРМУЛАМ
Студент гр. ИКПИ-81
Коваленко Л. А.
*/
int main(int argc, char **argv)
{
int i, n;
double x, y;
/* Ввод исходных данных */
printf("Input n, x: ");
scanf("%d %lf", &n, &x);
/* Проверка и вычисления */
if (n >= 6) {
y = 1.0;
for (i = 6; i <= n; i++)
y *= x/(x+1.0) + (i*i)/(1.0 + i*i);
y = 2.4*sin(x) + y;
} else y = 2.4*sin(x);
/* Вывод результатов */
printf("y=%.3lf", y);
return 0;
}
Ж. Выводы
Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.