Міністерство освіти і науки, молоді та спорту України
НУ «ЛП»
Кафедра АСУ
Лабораторна робота №1
із об’єктно-орієнтованого програмування не тему:
“Оголошення та структура класу”
Львів 2012
Мета роботи: ознайомитись з основними компонентами інтегрованого середовища програмування, навчитись створювати, відлагоджувати і виконувати програмні проекти; вивчити оголошення класу та рівні захисту його елементів.
Послідовність роботи:
Ознайомитись зі складом та режимами роботи обраного інтегрованого середовища.
Ознайомитись зі структурою програми мовою С++.
Побудувати та виконати програмний проект мовою С++.
Ознайомитись з особливостями оголошення класу та його об’єктів.
Відповідно до завдання написати програму мовою С++ та реалізувати її на комп’ютері.
Оформити звіт про роботу.
Текст індивідуального завдання:
Створити клас – дріб (раціональне число, що є відношенням двох цілих чисел). Визначити конструктор, деструктор, функції додавання, віднімання, множення і ділення дробів.
Текст програми
#include <iostream>
using namespace std;
class frac
{
int num;
int den;
int gcd(int a, int b) {
return (!b) ? a : gcd(b, a % b);
}
public:
frac() { num=den=1; }
frac(int a, int b) { num=a; den=b; }
int GetNum() { return num; }
int GetDen() { return den; }
double GetRes() { return double(num)/den; }
void SetNum(int a) { num=a; }
void SetDen(int a) { den=a; }
frac Add(frac obj);
frac Sub(frac obj);
frac Mul(frac obj);
frac Div(frac obj);
};
frac frac::Add(frac obj) {
int a=num*obj.den+obj.num*den, b=den*obj.den;
int n=(a>b)?gcd(a,b):gcd(b,a);
frac obj1(a/n,b/n);
return obj1;
}
frac frac::Sub(frac obj) {
int a=num*obj.den-obj.num*den, b=den*obj.den;
int n=abs((a>b)?gcd(a,b):gcd(b,a));
frac obj1(a/n,b/n);
return obj1;
}
frac frac::Mul(frac obj) {
int a=num*obj.num, b=den*obj.den;
int n=(a>b)?gcd(a,b):gcd(b,a);
frac obj1(a/n,b/n);
return obj1;
}
frac frac::Div(frac obj) {
int a=num*obj.den, b=den*obj.num;
int n=(a>b)?gcd(a,b):gcd(b,a);
frac obj1(a/n,b/n);
return obj1;
}
int main()
{
int a, b;
cout <<"a/b = ";
cin >> a >> b;
frac obj1(a,b);
cout <<"d/c = ";
cin >> a >> b;
frac obj2(a,b);
frac sum=obj1.Add(obj2), riz=obj1.Sub(obj2), dob=obj1.Mul(obj2), chs=obj1.Div(obj2);
cout <<obj1.GetNum()<<"/"<<obj1.GetDen()<<" + "<<obj2.GetNum()<<"/"<<obj2.GetDen();
cout <<" = "<<sum.GetNum()<<"/"<<sum.GetDen()<<" = "<<sum.GetRes()<<endl;
cout <<obj1.GetNum()<<"/"<<obj1.GetDen()<<" - "<<obj2.GetNum()<<"/"<<obj2.GetDen();
cout <<" = "<<riz.GetNum()<<"/"<<riz.GetDen()<<" = "<<riz.GetRes()<<endl;
cout <<obj1.GetNum()<<"/"<<obj1.GetDen()<<" * "<<obj2.GetNum()<<"/"<<obj2.GetDen();
cout <<" = "<<dob.GetNum()<<"/"<<dob.GetDen()<<" = "<<dob.GetRes()<<endl;
cout <<obj1.GetNum()<<"/"<<obj1.GetDen()<<" / "<<obj2.GetNum()<<"/"<<obj2.GetDen();
cout <<" = "<<chs.GetNum()<<"/"<<chs.GetDen()<<" = "<<chs.GetRes()<<endl;
system("PAUSE");
return 0; }
Реалізації програми
Реалізація 1:
Реалізація 2:
Висновок: під час виконання цієї лабораторної роботи я ознайомився із поняттям класу, освоїв середовище компілятора DevC++ та реалізував на практиці програму, яка описує клас – дріб з функціями додавання, віднімання, ділення та множення дробів.