You are on page 1of 6

Міністерство освіти і науки України

Національний технічний університет України


«Київський політехнічний інститут імені Ігоря Сікорського»
Факультет інформатики та обчислювальної техніки
Кафедра обчислювальної техніки

Лабораторна робота №1.2


з дисципліни
«Алгоритми і структури даних»

Виконав: Перевірила:
Студент групи ІМ-24 Молчанова А. А.
Дідур Вадим Сергійович
номер у списку групи: 3
Київ 20
1. Задане натуральне число n. Вирахувати значення заданої
формули за варіантом

2. Для вирішення задачі написати дві поограмит, перша –


використовувати вкладені цикли, друга- один цикл, метод
динамічного програмування.
3. Виконати розрахунок кількості операцій для кожного з
алгоритмів за методткою, вкладеною на лекції, додавши до неї
підрахунок кількості викликів стандартних функцій
4. Програма має правильно вирішувати поставлену задачу при
будь-якому заданому n, для якого результат обчислення може
бути конкретно представлений типом double.
5. Результуючі дані вивести у форматі з сімома знаками після
крапки.
Програма 1

#include <stdio.h>
#include <math.h>
#include<stdlib.h>

int main(){
int n = 0, a=1, counter = 0;
double sum = 0, product = 0, result = 0;

printf("Input n:");
scanf("%d", &n);

for (int i=1; i <= n; i++)


{
if (i == 1) counter++;
product = 1;
for (int j = 1; j <= i; j++)
{
if (j==1)counter++;
product *= ((double)2*j+1);
counter += 5;
}
a *= 3;
sum += (((double)a*log(i+1))/product);
counter += 10;
}
printf("result = %0.7f\n", sum);
printf("number of operations = %d\n", counter);
return 0;
}
Програма 2

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){
int n = 0, a=1, counter = 0;

double sum = 0;
double product = 1;

printf("Input n:");
scanf("%d", &n);

for (int i = 1; i<=n; ++i)


{
if (i==1) counter++;
product *= ((double)2*i+1);
counter += 3;

a *= 3;

sum += (((double)a*log(i+1))/product);
counter += 9;

}
printf("the result is equel to %7f\n", sum);
printf("the number of operations is equel to %d\n", counter);

return 0;
}
Таблиця результатів запуску програм для різних значень n=1,2,3,10,20,30,50,100
n 1 2 3 10 20 30 50 100
Кількість Перший 17 38 64 386 1271 2656 6926 26351
операцій спосіб
Другій 13 25 37 121 241 361 601 1201
спосіб

Назва діаграми
30000

25000

20000

15000

10000

5000

0
1 2 3 10 20 30 50 100 n

1 спосіб 2 спосіб Стовпець1

Висновок
Метод динамічного програмування значно оптимізує програму через зменшення кількості операцій.

You might also like