- •1.1. Програма роботи
- •1.2. Вказівки до виконання роботи
- •1.3. Зразок виконання роботи
- •2.1. Програма роботи
- •2.2. Вказівки до виконання роботи
- •2.3. Зразок виконання роботи
- •3.1. Програма роботи
- •3.2. Вказівки до виконання роботи
- •3.3. Зразок виконання роботи
- •4.1. Програма роботи
- •4.2. Вказівки до виконання роботи
- •4.3. Зразок виконання роботи
- •5.1. Програма роботи
- •5.2. Вказівки до виконання роботи
- •5.3. Зразок виконання роботи
- •6.1. Програма роботи
- •6.2. Вказівки до виконання роботи
- •6.3. Зразок виконання роботи
- •7.1. Програма роботи
- •7.2. Вказівки до виконання роботи
- •7.3. Зразок виконання роботи
2.1. Програма роботи
2.1.1. Підготувати бланк завдання та отримати завдання.
2.1.2. Запрограмувати логічні функції згідно з вказівками до виконання роботи.
2.1.3. Виконати одновимірне табулювання логічних функцій згідно з вказівками до виконання роботи.
2.1.4. Виконати двовимірне табулювання логічних функцій згідно з вказівками до виконання роботи.
2.1.5. Підготувати власні коректні вхідні дані для кожної з виконуваних задач, провести відповідні розрахунки і проаналізувати їх.
2.1.6. Оформити звіт про роботу та захистити її.
2.2. Вказівки до виконання роботи
2.2.1. Курсант/студент, відповідно до порядкового номера в журналі викладача, вибирає для себе індивідуальне завдання з розд. 2.4, яке складається з декількох задач, і записує його до бланку завдання (у документ Word).
2.2.2. У середовищі Borland C++ Builder 6 логічні функції необхідно запрограмувати двома способами: з введенням і без введення допоміжних змінних, логічні функції курсант/студент програмує на власний розсуд, не забуваючи при цьому про свої знання та навики програмування.
2.2.3. Одновимірне табулювання логічних функцій здійснюється за одним аргументом, конкретна назва якого вказана у самій задачі. У ній також задається початкове і кінцеве значення його зміни, а також крок табулювання
2.2.4. Двовимірне табулювання логічних функцій здійснюється за двома аргументами, конкретні назви яких вказано у самій задачі. У ній також задаються початкові та кінцеві значення їх зміни, а також кроки табулювання.
2.2.5. Власних вхідних даних потрібно підготувати не менше двох комплектів. Їхні значення мають бути коректними, знаходитися в розумних межах і не суперечити своїм логічним виразам (наприклад, щоб значення аргумента кореня квадратного чи логарифма натурального не були від'ємними, аргумент експоненти – не занадто великим і т.д.). Після проведення розрахунків потрібно їх проаналізувати, зробити відповідні висновки, внести власні пропозиції та занести їх до звіту.
2.2.6. Звіт з виконаної роботи має містити такі розділи:
бланк індивідуального завдання з записаними на ньому умовами задач;
код програми, який планується реалізувати у середовищі Borland C++;
результати відповідних розрахунків, які передбачено умовами задач;
аналіз отриманих результатів, висновки про особливості розв'язання задач і пропозиції щодо їх удосконалення.
2.3. Зразок виконання роботи
Задача 2.1. Задано такі дійсні числа: x = 1.53ln(№ + 0.5), y = 2.7ln(№ + 1.5), z = -2.15ln(№ + 1.5) (де № = 4 – номер варіанта). Потрібно розробити код програми для обчислення значень логічної функції с[x, y, z, b] та математичної функції b[x, y, z] згідно з такими математичними виразами:
і .
Код програми 2.1. Обчислення значень логічних функцій
#include <vcl>
#include <iostream> // Для потокового введення-виведення
#include <iomanip> // Використання маніпуляторів введення-виведення
#include <math> // Для математичних функцій
#include <conio> // Для консольного режиму роботи
using namespace std; // Використання стандартного простору імен
// Обчислення значення математичної функції b[x, y, z]
double Fn_b(double, double, double);
// Обчислення значення логічної функції c[x, y, z, b]
double Fn_c(double, double, double, double);
int main()
{
// Задання точності
cout.precision(3); // Формат #.###
cout.setf(ios_base::fixed); // Формат #.###
SetConsoleOutputCP(1251); // Виведення кирилиці
// Опис змінних
double x, y, z, c;
// Введення вхідних даних
int Nv; cout << "Введіть значення Nv = "; cin >> Nv;
// Розрахунок значень x, y, z
x = 1.53 * log(Nv + 0.5); cout << "Значення x = " << setw(7) << x << "." << endl;
y = 2.7 * log(Nv + 1.5); cout << "Значення y = " << setw(7) << y << "." << endl;
z = -2.15 * log(Nv + 1.5); cout << "Значення z = " << setw(7) << z << endl << endl;
cout << "Завдання 2.1. Обчислення значень математичної та логічної функцій" << endl;
// Розрахунок значення математичної функції b[x, y, z]
double b1 = (y - x)/(z + 1.2); cout << "Значення b1 = " << setw(8) << b1 << endl;
double b2 = pow(y - x, 2)/pow(sin(pow(z, 3)), 2); cout << "Значення b2 = " << setw(8) << b2 << endl;
double b3 = pow(y - x, 3)/cos(z * z); cout << "Значення b3 = " << setw(8) << b3 << endl;
double b = b1 + b2 + b3; cout << "Значення функції b [] = " << setw(6) << b << endl;
double bb = (y - x)/(z + 1.2) + pow(y - x, 2)/pow(sin(pow(z, 3)), 2) + pow(y - x, 3)/cos(z * z);
cout << "Значення функції b'[] = " << setw(6) << bb << endl;
cout << "Значення функції b\"[] = " << setw(6) << Fn_b(x, y, z) << endl << endl;
// Розрахунок значення логічної функції c[x, y, z, b]
if(x < - 0.5)
c = pow(fabs(x * y + 2 * b), 1./3);
else if(x >= - 0.3 && x < 0.3)
c = b + (x * x + y * y)/(z + (b/2));
else
c = pow(pow(fabs(0.4 * b * b - pow(x, 3)), 0.3), 1./2);
cout << "Значення функції c [] = " << setw(6) << c << endl;
cout << "Значення функції c\"[] = " << setw(6) << Fn_c(x, y, z, b) << endl;
getch(); return 0;
}
// Обчислення значення математичної функції b[x, y, z]
double Fn_b(double x, double y, double z)
{
double b1 = (y - x)/(z + 1.2);
double b2 = pow(y - x, 2)/pow(sin(pow(z, 3)), 2);
double b3 = pow(y - x, 3)/cos(z * z);
return b1 + b2 + b3;
}
// Обчислення значення логічної функції c[x, y, z, b]
double Fn_c(double x, double y, double z, double b)
{
if(x < - 0.5)
return pow(fabs(x * y + 2 * b), 1./3);
else if(x >= - 0.3 && x < 0.3)
return b + (x * x + y * y)/(z + (b/2));
else
return pow(pow(fabs(0.4 * b * b - pow(x, 3)), 0.3), 1./2);
}
Результат обчислення значень логічних функцій
Задача 2.2. Для аргумента x задано межі та крок його зміни: xп = -1.83ln(№ + 0.5), xк = 2.38ln(№ + 0.5), x = (xк – xп)/8, а також дійсні числа y = 2.7ln(№ + 1.5), z = -2.15ln(№ + 1.5) (де № = 4 – номер варіанта). Потрібно розробити код програми для одновимірного табулювання логічної функції c = f[x, y, z, b] та математичної функції b = f[x, y, z] за аргументом х, використовуючи математичні вирази, наведені у задачі 2.1.
Код програми 2.2. Одновимірне табулювання логічних функцій
#include <vcl>
#include <iostream> // Для потокового введення-виведення
#include <iomanip> // Використання маніпуляторів введення-виведення
#include <math> // Для математичних функцій
#include <conio> // Для консольного режиму роботи
using namespace std; // Використання стандартного простору імен
// Обчислення значення математичної функції b[x, y, z]
double Fn_b(double, double, double);
// Обчислення значення логічної функції c[x, y, z, b]
double Fn_c(double, double, double, double);
int main()
{
// Задання точності
cout.precision(3); // Формат #.###
cout.setf(ios_base::fixed); // Формат #.###
SetConsoleOutputCP(1251); // Виведення кирилиці
// Опис змінних
double dx, xp, xk, x, y, z, b, c;
cout << "Завдання 2.2. Одновимірне табулювання математичної та логічної функцій" << endl << endl;
// Введення вхідних даних
int Nv; cout << "Введіть значення Nv= "; cin >> Nv;
xp = -1.83 * log(Nv + 0.5); cout << "Значення xp = " << setw(6) << xp << "; ";
xk = 2.38 * log(Nv + 0.5); cout << setw(8) << "Значення xk = " << setw(6) << xk << "; ";
dx = (xk - xp)/8; cout << setw(8) << "Значення dx = " << setw(6) << dx << "." << endl;
y = 2.7 * log(Nv + 1.5); cout << "Значення y = " << setw(7) << y << "; ";
z = - 2.15 * log(Nv + 1.5); cout << setw(8) << "Значення z = " << setw(6) << z << "." << endl << endl;
// Табулювання функції за змінною x
for(x = xp; x <= xk + dx/2; x += dx)
{
cout << setw(4) << "x= " << setw(6) << x << "; ";
// Розрахунок значення функцій b[x, y, z] та c[x, y, z, b]
b = Fn_b(x, y, z); cout << setw(8) << "b[]= " << setw(7) << b;
c = Fn_c(x, y, z, b); cout << setw(8) << "c[]= " << setw(7) << c << endl;
}
getch(); return 0;
}
Результат одновимірного табулювання логічних функцій
Задача 2.3. Для аргументів x та y задано відповідні межі та крок їх зміни: xп = -1.38ln(№ + 0.5), xк = 2.83ln(№ + 1.5), x = (xк – xп)/8, yп = -0.74ln(№ + 1.5), yк = 0.86ln(№ + 1.5), y = (yк – yп)/10, z = -2.15ln(№ + 1.5) (де № = 4 – номер варіанта). Потрібно розробити код програми для двовимірного табулювання логічної функції c = f[x, y, z, b] та математичної функції b = f[x, y, z] за аргументами х і у, використовуючи математичні вирази, наведені у задачі 2.1.
Код програми 1.2. Двовимірне табулювання логічних функцій
#include <vcl>
#include <iostream> // Для потокового введення-виведення
#include <iomanip> // Використання маніпуляторів введення-виведення
#include <math> // Для математичних функцій
#include <conio> // Для консольного режиму роботи
using namespace std; // Використання стандартного простору імен
// Обчислення значення математичної функції b[x, y, z]
double Fn_b(double, double, double);
// Обчислення значення логічної функції c[x, y, z, b]
double Fn_c(double, double, double, double);
int main()
{
// Задання точності
cout.precision(3); // Формат #.###
cout.setf(ios_base::fixed); // Формат #.##
SetConsoleOutputCP(1251); // Виведення кирилиці
// Опис змінних
double dx, xp, xk, x, y, yp, yk, dy, z, b, c;
cout << "Завдання 2.3. Двовимірне табулювання логічних функцій" << endl << endl;
int Nv; cout << "Введіть значення Nv= "; cin >> Nv;
xp = -1.38 * log( Nv + 0.5); cout << "Значення xp = " << setw(6) << xp << "; ";
xk = 2.83 * log( Nv + 1.5); cout << setw(14) << "Значення xk = " << setw(6) << xk << "; ";
dx = (xk - xp)/8; cout << setw(14) << "Значення dx = " << setw(6) << dx << "." << endl;
yp = -0.74 * log( Nv + 1.5); cout << "Значення yp = " << setw(6) << yp << "; ";
yk = 0.86 * log( Nv + 1.5); cout << setw(14) << "Значення yk = " << setw(6) << yk << "; ";
dy = (yk - yp)/10; cout << setw(14) << "Значення dy = " << setw(6) << dy << "." << endl;
z = -2.15 * log( Nv + 1.5) ; cout << "Значення z = " << setw(7) << z << "." << endl << endl;
cout << "Двовимірне табулювання функції b[x, y, z]" << endl;
cout << setw(12) << " y/x -- > ";
for(x = xp; x <= xk; x += dx)
cout << setw(8) << x << "; ";
cout << endl;
for(y = yp; y <= yk; y += dy)
{
cout << setw(6) << y << " -- > ";
for(x = xp; x <= xk; x += dx)
cout << setw(8) << Fn_b(x, y, z); // Розрахунок значення функцій b[x, y, z]
cout << endl;
}
cout << endl;
cout << "Двовимірне табулювання логічної функції c[x, y, z, b]" << endl;
cout << setw(12) << " y/x -- > ";
for(x = xp; x <= xk; x += dx)
cout << setw(8) << x << "; ";
cout << endl;
for(y = yp; y <= yk; y += dy)
{
cout << setw(6) << y << " -- > ";
for(x = xp; x <= xk; x += dx)
{
// Розрахунок значення функцій b[x, y, z] та c[x, y, z, b]
b = Fn_b(x, y, z); cout << setw(8) << Fn_c(x, y, z, b);
}
cout << endl;
}
getch(); return 0;
}
Результат двовимірного табулювання логічних функцій
2.4. Індивідуальні завдання
Задача 2.1. Задано такі дійсні числа: x = 0.48ln(№ + 1.5), y = 1.47ln(№ + 0.5), z = -1.3ln(№ + 1.5) (де № – номер варіанта). Потрібно розробити код програми для обчислення значень логічної функції с[x, y, z, b] та математичної функції b[x, y, z] за наведеними нижче математичними виразами:
Задача 2.2. Для аргумента x задано межі та крок його зміни: xп = -1.83ln(№ + 0.5), xк = 2.38ln(№ + 0.5), x = (xк – xп)/8, а також дійсні числа y = 1.47ln(№ + 0.5), z = -1.3ln(№ + 1.5), де № – номер варіанта. Потрібно розробити код програми для одновимірного табулювання логічної функції с = f[x, y, z, b] та математичної функції b = f[x,y,x] за аргументом х, використовуючи математичні вирази, наведені у задачі 2.1.
Задача 2.3. Для аргументів x та y задано відповідні межі та крок їх зміни: xп = -1.83ln(№ + 0.5), xк = 2.38ln(№ + 0.5), x = (xк – xп)/8, yп = -0.74ln(№ + 1.3), yк = 0.86ln(№ + 1.7), y = (yк – yп)/10, а також задано дійсне число z = -1.3ln(№ + 1.5). Потрібно розробити код програми для двовимірного табулювання логічної функції с = f[x, y, z, b] та математичної функції b = f[x, y, z] за аргументами х і у, використовуючи математичні вирази, наведені у задачі 2.1.
Лабораторна робота № 3. ХАРАКТЕРНІ МЕХАНІЗМИ НАКОПИЧЕННЯ СУМИ І ДОБУТКУ