You are on page 1of 8

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ

УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»

ІКТА
кафедра ЗІ

ЗВІТ
до лабораторної роботи №2 (а,b)

з курсу: «Технології програмування»


на тему: «Програми з розгалуженими та циклічними алгоритмами»

Варіант № 11

Виконала: ст. гр. КБ-106


Самарська Н.І.
Прийняла: Руда Х.С.

ЛЬВІВ 2023
Мета роботи: вивчити оператори мови Сі та основні функції введення-виведення даних,
навчитися складати та відлагоджувати розрахункові програми з розгалуженими та циклічними
структурами.

Скласти блок-схеми алгоритмів та програми мовою СІ для табулювання функцій.


Забезпечити ввід значень інтервалу, кроку і похибки табулювання з клавіатури і вивід результатів на
дисплей.
а) табулювання функції, що вибирається залежно від значення аргументу, на проміжку [a, b] з
кроком табуляції h.

б) табулювання функції, представленої рядом, на інтервалі [a, b] з кроком табуляції h та


абсолютною похибкою d. Оцінку похибки здійснювати за значенням модуля чергового члена ряду.

а)
Функції Умови для вибору Крок, Інтервал,
функції h [a, b]
log3(x+sin(x)) x<4
lg(ex+4) 4≤x<5 0.2 [3,6]
ln(lg(x)) x≥5

б)
Функція Інтервал, [a, Крок, h Похибка, d
b]

( −1) k x( 2k +3) [0, 1] 0.1 0.0001

k = 0 ( 2k + 1)( 2k + 3)
2а. Блок-схема алгоритму програми
Початок

а, b, h

x꞊a

+
x<=b -

+ -
x<4

+ -
y= log3(x+sin(x)) 4≤x<
5

+ -
x, y y= lg(ex+4) x≥5

x, y y=ln(lg(x))
x+=h

x, y

Кінець
3а. Список ідентифікаторів констант, змінних, функцій, використаних у блок-
схемі алгоритму і програмі, та їх пояснення

x, a, b, h – змінні типу з плаваючою крапкою подвійної точності (десятковий запис);


y – змінна типу з плаваючою крапкою подвійної точності (десятковий запис), якій надається
значення результату обчислення виразу;
main( ) – головна функція;
printf( ) – функція виводу даних;
scanf( ) – функція вводу даних;
log( ) – математична функція обчислення натурального логарифма;
lg( ) – математична функція обчислення десяткового логарифма;
sin() − математична функція обчислення синуса;
if − умовний оператор;
for − оператор покрокового циклу.
4а. Текст програми
#include <stdio.h>
#include <math.h>
int main()
{
double x, y, a, b, h;
printf("a=");
scanf("%lf", &a);
printf("b=");
scanf("%lf", &b);
printf("h=");
scanf("%lf", &h);
for (x = a; x <= b; x += h)
{
if (x < 4)
{
y = log(x + sin(x)) / log(3.0);
printf("x=%lf \t y=%lf \n", x, y);
}
else if (x < 5)

{
y = log10(exp(x) + 4);
printf("x=%lf \t y=%lf \n", x, y);
}
else
{
y = log(log10(x));
printf("x=%lf \t y=%lf \n", x, y);
}
}

return 0;
}
5а. Результат роботи програми
a=3
b=6
h=0.2
x=3.000000 y=1.041841
x=3.200000 y=1.041988
x=3.400000 y=1.042808
x=3.600000 y=1.046569
x=3.800000 y=1.055366
x=4.000000 y=1.767884
x=4.200000 y=1.849335
x=4.400000 y=1.931716
x=4.600000 y=2.014875
x=4.800000 y=2.098680
x=5.000000 y=-0.358147
x=5.200000 y=-0.334070
x=5.400000 y=-0.311437
x=5.600000 y=-0.290101
x=5.800000 y=-0.269936
2б.Блок-схема алгоритму

Початок

double a, b, h, d;
double, result,value, term, int terms = 0;

for (double x = a; x <= b; x += h)

printf("x = %.2lf, Value =


%.6lf, Terms = %d\n", x, int terms = 0; Кінець
value, terms);

int denominator = (2 * k + 1) * (2 * k + 3);


double term = pow(-1, k) * pow(x, 2 * k
+ 3) / denominator;

terms++;
value += term;

result += term

while (fabs(term) > d


3б. Список ідентифікаторів констант, змінних, функцій, використаних у блок-
схемі алгоритму і програмі, та їх пояснення

a: Ліва межа інтервалу.

b: Права межа інтервалу.

h: Крок табуляції.

d: Абсолютна похибка.

x: Змінна для ітерації по інтервалу.

terms: Змінна для відстеження кількості членів ряду.

value: Змінна для зберігання поточного значення функції.

term: Змінна для зберігання поточного члена ряду.

computeSeries: Функція обчислює значення ряду за допомогою змінних x та terms.


Використовуються формули математичних операцій та функцій з бібліотеки math.h.

main: Головна функція програми, яка взаємодіє з користувачем, зчитує введені значення та
викликає функцію computeSeries. Здійснює табулювання та виведення результатів на екран за
допомогою циклу for та циклу while.

printf та scanf: Функції введення та виведення для взаємодії з користувачем.

4б. Текст програми


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

double computeSeries(double x, int terms) {


double result = 0.0;
for (int k = 0; k < terms; k++) {
int denominator = (2 * k + 1) * (2 * k + 3);
double term = pow(-1, k) * pow(x, 2 * k + 3) / denominator;
result += term;
}
return result;
}

int main() {
double a, b, h, d;
printf("Enter number for a: ");
scanf("%lf", &a);
printf("Enter number for b: ");
scanf("%lf", &b);
printf("Enter number for h: ");
scanf("%lf", &h);
printf("Enter nmber for d: ");
scanf("%lf", &d);

for (double x = a; x <= b; x += h) {


int terms = 0;
double value = computeSeries(x, terms);
double term = pow(x, 3) / 3;
while (fabs(term) > d) {
terms++;
value += term;
term = pow(-1, terms) * pow(x, 2 * terms + 3) / ((2 * terms + 1) * (2 * terms +
3));
}
printf("x = %.2lf, Value = %.6lf, Terms = %d\n", x, value, terms);
}
return 0;
}

5б. Результат роботи програми


Enter number for a: 0
Enter number for b: 1
Enter number for h: 0.1
Enter nmber for d: 0.0001
x = 0.00, Value = 0.000000, Terms = 0
x = 0.10, Value = 0.000333, Terms = 1
x = 0.20, Value = 0.002667, Terms = 1
x = 0.30, Value = 0.008838, Terms = 2
x = 0.40, Value = 0.020651, Terms = 2
x = 0.50, Value = 0.039807, Terms = 3
x = 0.60, Value = 0.067456, Terms = 4
x = 0.70, Value = 0.105041, Terms = 5
x = 0.80, Value = 0.153346, Terms = 7
x = 0.90, Value = 0.213147, Terms = 12
x = 1.00, Value = 0.285349, Terms = 50

You might also like