Міністерство освіти і науки, молоді та спорту України
НУ «Львівська політехніка»
Кафедра АСУ
/
Лабораторна робота №1
На тему: «Оголошення та структура класу»
Мета роботи: ознайомитись з основними компонентами інтегрованого середовища програмування; навчитись створювати, відлагоджувати і виконувати програмні проекти; вивчити оголошення класу та рівні захисту його елементів.
Послідовність роботи:
1. Ознайомитись зі складом та режимами роботи обраного інтегрованого середовища C++.
2. Ознайомитись зі структурою програми мовою C++.
3. Побудувати та виконати програмний проект мовою C++.
4. Ознайомитися з особливостями оголошення класу та його об’єктів.
5. Відповідно до завдання написати програму мовою C++ та реалізувати її на комп’ютері.
6. Оформити звіт про роботу за такою структурою:
назва роботи;
мета роботи;
послідовність роботи;
індивідуальне завдання;
текст програми;
контрольний приклад та результати роботи програми;
висновки.
Індивідуальне завдання:
Створити клас – трикутник. У закритій частині описати поля – довжини сторін. Визначити конструктор, деструктор, функції зміни значень полів і отримання їхніх значень, виведення елементів класу, функції обчислення площі, периметру та кутів. Функції зміни значень полів класу повинні перевіряти коректність параметрів, що задаються.
Розвязок:
#include <iostream>
#include <cmath>
using namespace std;
double const PI 3.14159265;
class triangle
{
double a, b, c;
public:
double get_a() {return a;}
void set_a(double x1) {if (x1 > 0) a = x1;}
void show_a() {cout<<a<<endl;}
double get_b() {return b;}
void set_b(double x2) {if (x2 > 0) b = x2;}
void show_b() {cout<<b<<endl;}
double get_c() {return c;}
void set_c(double x3) {if (x3 > 0) c = x3;}
void show_c() {cout<<c<<endl;}
double angle_ab();
double angle_bc();
double angle_ca();
double perimeter() {return a + b + c;}
double area();
bool check(double C, double B, double A);
triangle(double x1, double x2, double x3);
~triangle (){};
};
void main()
{
triangle object = triangle(5,6,15);
object.set_a(10);
object.set_b(13);
object.set_c(15);
cout<<"Side A: "<<object.get_a()<<endl;
cout<<"Side B: "<<object.get_b()<<endl;
cout<<"Side C: "<<object.get_c()<<endl;
cout<<"Angle alpha: "<<object.angle_ab()<<endl;
cout<<"Angle beta: "<<object.angle_bc()<<endl;
cout<<"Angle gamma: "<<object.angle_ca()<<endl;
cout<<"Perimeter: "<<object.perimeter()<<endl;
cout<<"Area: "<<object.area()<<endl;
system("pause");
}
double triangle::angle_ab()
{
double ang = acos(-pow(a, 2) + pow(b, 2) + pow(c, 2)) / (2 * b *c) * 180 / PI;
return ang;
}
double triangle::angle_bc()
{
double ang = acos((pow(a, 2) - pow(b, 2) + pow(c, 2)) / (2 * a * c)) * 180 / PI;
return ang;
}
double triangle::angle_ca()
{
double ang = acos(pow(a, 2) + pow(b, 2) - pow(c, 2)) / (2 * a * b) * 180 / PI;
return ang;
}
double triangle::area()
{
double p = (a + b + c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
bool triangle::check(double A, double B, double C)
{
if (A+B>C && B+C>A && C+A>B) return true;
else return false;
}
triangle::triangle(double x1, double x2, double x3)
{
if (check(x1, x2, x3))
{
a = x1;
b = x2;
c = x3;
}
else cout<<"Error. Incorrect data."<<endl;
}
/
Висновок:
На даній лабораторній роботі я навчився оголошувати класи, ознайомився з конструкторами та деструкторами. У моїй лабораторній роботі не використовується деструктор за призначенням оскільки формально завдання деструктора полягає у вивільнені динамічно виділеної пам’яті, що в моїй роботі не використовується.