лабы для 28 варианта / Лабораторная работа№4
.docxСанкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича
ПРОГРАММИРОВАНИЕ
Отчёт по Лабораторной Работе №4
тема: «ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ.
ВЫЧИСЛЕНИЯ ПО РЕККУРЕНТНЫМ ФОРМУЛАМ»
Санкт-Петербург 2020
А. Постановка задачи
Требуется составить программу вычисления функции , содержащей произведение. Формула:
Б. Разработка алгоритма
В программе должен быть предусмотрен ввод исходных данных, к которым относятся значение аргумента x и верхняя граница суммирования n. Выделим в отдельную формулу сумму, стоящую в скобках. Получаем две расчётные формулы:
y =
В формуле вычисления произведения нет переменных, результаты выполнения которых не зависят от переменной суммирования i.
В. Таблица идентификаторов
N |
Обозначение в задаче |
Идентификатор |
Назначение |
1 |
n |
n |
Верхняя граница суммирования |
2 |
x |
x |
Аргумент функции |
3 |
- |
y |
Сумма |
4 |
z |
z |
Результат вычислений |
5 |
– |
i |
Промежуточные данные |
Г. Схема алгоритма
Д. Контрольный расчёт
В качестве контрольного набора выберем n=3; x=5
Результаты вычислений приведены ниже в таблице вычислений.
Назначение набора данных |
Набор данных |
Результаты ручных вычислений |
Результаты машинных вычислений |
|
n |
x |
y |
y |
|
Контрольный набор |
3 |
5 |
24.880 |
24.887 |
Рабочий набор |
40 |
0,85 |
- |
66062.578 |
Е. Программа на языке Си
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n, k, i;
float x, p, z;
printf("n= ");
scanf("%i", &n);
printf("x= ");
scanf("%f", &x);
do
{
printf("1-For loop; 2-While loop; 3-Do while loop; 4-Exit\n\n");
scanf("%i", &k);
switch(k)
{
case 1:
p=1;
for (i=3; i<= n; i++)
{
p = p*(1+(x/(10+x))*pow (i, 0.5));
}
z=3.4*x+x*p;
printf("For: z=%6.3f\n\n", z);
break;
case 2:
p=1;
i=3;
while (i<= n)
{
p = p*(1+(x/(10+x))*pow (i, 0.5));
i++;
}
z=3.4*x+x*p;
printf("While: z=%6.3f\n\n", z);
break;
case 3:
p=1;
i=3;
do
{
p = p*(1+(x/(10+x))*pow (i, 0.5));
i++;
} while (i<=n);
z=3.4*x+x*p;
printf("Do while: z=%6.3f\n\n", z);
break;
default:
break;
}
}
while (k!=4);
printf("Ending the code");
return 0;
}
Ж. Выводы
Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.