You are on page 1of 11

ПВНЗ БУКОВИНСЬКИЙ УНІВЕРСИТЕТ

Кафедра комп’ютерних систем і технологій

ЗВІТ
Про виконання лабораторної роботи № 4
“Циклічні алгоритми та програми”
з дисципліни “АЛГОРИТМІЗАЦІЯ І ПРОГРАМУВАННЯ”
Варіант №16

Виконав студент групи “К-11”


Лебідь Е.Ю.
Прийняв викладач
Артеменко О.І.

2020
Лабораторна робота №4
Тема: Циклічні алгоритми та програми.
Мета: Реалізація алгоритмів з різними видами циклів мовою C.
Завдання: Здобути навички створення, відлагодження та реалізації програм з
різними видами циклів мовою C.

GitHub: https://github.com/Aves2001/GitHub_Lab_4_Lebid_Eduard

Завдання 1. Створити програму для обчислення значень функції згідно


свого варіанту. Передбачити у програмі з допомогою циклу попередню
перевірку допустимості вхідних параметрі для арифметичних операцій,
які при певних значеннях аргументу можуть давати невизначений
результат (ділення на нуль, корінь з від’ємного числа, логарифмування
числа, меншого за нуль тощо). Повідомити користувача про це.
Наприклад «для заданих значень y та z у обчислюваному виразі
виконується ділення на 0. Задайте інші значення» Дія циклу
припиняється, як тільки користувач задав коректні значння вхідних
параметрів.

16. Задані значення цілих змінних x,y. Обчислити значення функції:

xy +2 x− y x
a=
sin ( x ) + xy−2 x + y
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>

int x = 0;
int y = 0;
unsigned char zz = 0;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//

do{
printf ("\r\nx = ");
scanf ("%d", &x);
printf ("y = ");
scanf ("%d", &y);

double a1 = x * y; //3*4 //v


double a2 = 2 * x; //2*3 //v
double a3 = pow(y,x); //4^3 //v
double a4 = y * y; //3*4 +4 //n
double a5 = a2; //2*3 //n
double b1 = a1 + a2 - a3;//12-6-64 //v //-46
double b2 = a4; //4*4 //n
double c1 = b2 - a5; //16-6 //n //+10
//double d1 = b1 - b1 - b1; // - - //

double f1 = sin(x) + c1;


double f2 = b1 / f1;
//double f3 = d1 / f1;

if (x < 0 && y == 0)
{
system("cls");
printf("\r\nУ обчислюваному виразі: ноль у відємному степені\r\
n");
printf("\r\nВведіть дані заново:\r\n");
}

else if (f1 == 0)
{
system("cls");
printf("\r\nУ обчислюваному виразі: виконується
ділення на 0\r\n");
printf("\r\nВведіть дані заново:\r\n");
}
else {
zz = 1;
printf ("\r\na = %g\r\n", f2);
}

}
while (zz == 0);
// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}

Завдання 2. Створити програми для розв’язування задачі згідно свого


варіанту:
A) з використанням циклу з параметром
B) з використанням циклу з передумовою
C) з використанням циклу з післяумовою

16. Обчислити середнє арифметичне всіх чисел у діапазоні [0;30].

A)
#include <stdio.h>
#include <conio.h>
#include <windows.h>
// діапазон:
double a = 0; // Від
double b = 30; // До

double sum = 0;
double f = 0;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//

double c1 = a;
double c2 = b;
double i = 0;

for (c1; c1 <= c2; c1++)


{
i++;
sum+= c1;
}

double f = sum/i;

printf("\r\nСереднє арифметичне всіх чисел у діапазоні [%g;%g] = %g\r\n", a,


b, f);

// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}

B)

#include <stdio.h>
#include <conio.h>
#include <windows.h>
// діапазон:
double a = 0; // Від
double b = 30; // До

double s2 = 0;
double s1 = 0;
double s = 0;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//

double c1 = a;
double c2 = b;

while (c1 <= c2)


{
s += c1;
s2++;
c1++;
}

double s1 = s/s2;

printf("\r\nСереднє арифметичне всіх чисел у діапазоні [%g;%g] = %g\r\n", a,


b, s1);

// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}
C)

#include <stdio.h>
#include <conio.h>
#include <windows.h>
// діапазон:
double a = 0; // Від
double b = 30; // До

double s2 = 0;
double s1 = 0;
double s = 0;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//

double c1 = a;
double c2 = b;
do {

s += c1;
s2++;
c1++;

}while (c1 <= c2);


double s1 = s/s2;

printf("\r\nСереднє арифметичне всіх чисел у діапазоні [%g;%g] = %g\r\n", a,


b, s1);

// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}

Завдання 3. Створити програми для розв’язування задачі згідно свого


варіанту:
10 10
i+ 2
16. Задано ціле число x. Обчислити: ∑ ∑
i=1 j=i j+ x

#include <stdio.h>
#include <conio.h>
#include <windows.h>

int x = 0;
double i = 1;
double sum_i = 0;
double sum_j = 0;
int zz = 0;

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//

do{
printf ("\r\nВведіть ціле число\r\n\nx = ");
scanf ("%d", &x);

if (x == 0)
{
system("cls");
printf("X не може бути нулем\r\n");
}else zz = 1;
}while(zz == 0);

while (i <= 10)


{
sum_i += i;
i++;}

double j = sum_i;
while (j <= 10)
{
sum_j += j;
j++;}

double a1 = sum_i + 2;
double a2 = sum_j + x;
double a3 = a1/a2;

printf ("\r\nВідповідь: [%g]\r\n", a3);

// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}
Завдання 4. Використовуючи оператори циклу, обчислити і вивести на
екран у табличному вигляді значення функції y=f ( x ) на заданому
інтервалі зміни значень аргумента х від а до b з кроком dx. За
необхідності передбачити виникнення виключних ситуацій
(невизначений результат, ділення на нуль, корінь з від’ємного числа,
логарифмування числа, меншого за нуль тощо). Результати обчислень
подати у вигляді наступної таблиці:
Результати обчислення функції y=f ( x ) на проміжку a, b з кроком dx .
x y=f ( x )

16. y= 4√ x , a=1.25, b=6.75, dx=0.25

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

float y=0;
float x=1.25; //a=
float b = 6.75; //b=
float dx = 0.25; //крок

int chcp, chcpOut = 0;


int main(void)
{
// память chcp
chcp = GetConsoleCP();
chcpOut = GetConsoleOutputCP();

// UTF-8
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
//

printf("\n******************\n");
printf("*X\t\tY*\n");
printf("******************\n");
while (x<=b)
{
y=pow(x,1/4.0);
printf(" %d\t%9.2lf\n", x, y);
x+=dx;
}

// Вертаєм chcp
SetConsoleCP(chcp);
SetConsoleOutputCP(chcpOut);
//
getch();
return 0;
}

GitHub: https://github.com/Aves2001/GitHub_Lab_4_Lebid_Eduard

Висновок: виконуючи лабораторну роботу №4 я здобув навички створення,


відлагодження та реалізації програм з різними видами циклів мовою C.

You might also like