Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы для 28 варианта / Лабораторная работа№4

.docx
Скачиваний:
4
Добавлен:
21.12.2020
Размер:
154.85 Кб
Скачать

Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича

ПРОГРАММИРОВАНИЕ

Отчёт по Лабораторной Работе №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;

}

Ж. Выводы

Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.