лабы для 28 варианта / Лабораторная работа№5
.docxСанкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича
ПРОГРАММИРОВАНИЕ
Отчёт по Лабораторной Работе №5
тема: «ПРОГРАММИРОВАНИЕ ВЛОЖЕННЫХ ЦИКЛОВ»
Санкт-Петербург 2020
А. Постановка задачи(28 ВАРИАНТ)
Требуется составить программу вычисления функции . Формула:
Б. Разработка алгоритма
В данной лабораторной работе рассматривается задача, содержащая несколько циклических алгоритмов. Алгоритм решения данной задачи, следующий:
Вычислить значение p1, то есть:
Вычислить значение s2, то есть:
y =
В программе должен быть предусмотрен ввод исходных данных, к которым относятся переменные xn, xk, m, n; вычисление и вывод y.
В. Таблица идентификаторов
N |
Обозначение в задаче |
Идентификатор |
Назначение |
1 |
m |
m |
Входные данные |
2 |
n |
n |
Входные данные |
3 |
y |
y |
Итоговое значение выражение |
4 |
|
xn |
Начальное значение аргумента |
5 |
|
xk |
Конечное значение аргумента |
6 |
x |
x |
Текущее значение аргумента |
7 |
- |
i |
Счётчики цикла |
8 |
- |
j |
|
9 |
- |
k |
|
10 |
|
p |
Промежуточные переменные |
11 |
|
p1 |
|
12 |
|
s |
Г. Диаграмма Насси – Шнейдермана
(не очень правильно)
Д. Контрольный расчет
Назначение набора данных |
Набор данных |
Результаты вычислений |
|||||||||
Ручные |
Машинные |
||||||||||
xn |
xk |
n |
m |
Argument |
Function |
Argument |
Function |
||||
Контрольный набор |
1 |
4 |
4 |
2 |
1 |
1.7218 |
1 |
1.7218 |
|||
2 |
1.8710 |
2 |
1.8710 |
||||||||
3 |
2.2424 |
3 |
2.2424 |
||||||||
Рабочий набор |
0 |
5 |
20 |
10 |
- |
0.000 |
43.3759 |
||||
0.263 |
67.9403 |
||||||||||
0.526 |
91.6200 |
Е. Программа на языке Си
#include <stdio.h>
#include <math.h>
int main()
{
int m, n, k, i, j;
float xn, xk, p, s, p1, y, x, dx;
printf("xn=");
scanf("%f", &xn);
printf("xk=");
scanf("%f", &xk);
printf("m=");
scanf("%d", &m);
printf("n=");
scanf("%d", &n);
printf("Number| Argument | Function |\n");
printf("------|----------|----------|\n");
dx = (xk - xn) / (n - 1);
x = xn;
s = 0;
for (j = 1; j <= m; j++)
{
s+=sqrt(j);
}
p1 = 1;
for (i = 1; i <= n; i++)
{
p = 1;
for (k = 1; k<= m; k++)
{
p *= sqrt(x+k);
}
y = sqrt(fabs(2*x-p+s));
printf("%6d|%10.3f|%10.4f|\n",i, x, y);
x += dx;
}
return 0;
}
Ж. Выводы
Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.