Вы находитесь на странице: 1из 2

Курс: Объектно-ориентированное

программирование на C++
Задание №1
Реализуйте класс Дробь. Необходимо хранить числитель и знаменатель
в качестве переменных-членов. Реализуйте функции-члены для ввода данных
в переменные-члены, для выполнения арифметических операций (сложение,
вычитание, умножение, деление, и т.д.).
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <time.h>
#include <cmath>
#include <math.h>
#include <string.h>
using namespace std;

class Fraction {
int x, y;
public:
void Set(int _x, int _y) {
if (_x > _y) {
for(int i = _y; i >1; i--)
if (_y % i == 0 && _x % i == 0) {
_y = _y / i;
_x = _x / i;
i = _y;
}
x = _x;
y = _y;
}
else if (_y > _x) {
for (int i = _x; i > 1; i--)
if (_y % i == 0 && _x % i == 0) {
_y = _y / i;
_x = _x / i;
i = _x;
}
x = _x;
y = _y;
}
else {
y = 1;
x = 1;
}

}
float GetSum(Fraction drob) {
return (float)((x*drob.GetY() + drob.GetX()*y)/(y* drob.GetY()));
}
float GetSubx(Fraction drob) {
return (float)((x * drob.GetY() - drob.GetX() * y) / (y * drob.GetY()));
}
float GetMult(Fraction drob) {
return (float)((x*drob.GetX())/ (y* drob.GetY()));
}
float GetDivx(Fraction drob) {
return (float)((x * drob.GetY()) / (y * drob.GetX()));
}
double GetPowx(Fraction drob) {
return (double)pow((float)x/y, (float)drob.GetX()/ drob.GetY());
}
int GetX() {
return x;
}
int GetY() {
return y;
}
};

int main() {

setlocale(LC_ALL, "ukr");

int a, b, a1, b1;


cin >> a >> b >> a1 >> b1;

if (a == 0 || a1 == 0 || b == 0 || b1 == 0) {
cout << "Error";
return 1;
}

Fraction ab;
Fraction a1b1;

ab.Set(a, b);
a1b1.Set(a1, b1);
cout << ab.GetSum(a1b1) << " " << ab.GetSubx(a1b1) << " " << ab.GetMult(a1b1) << " "
<< ab.GetDivx(a1b1) << " " << ab.GetPowx(a1b1);

return 0;
}

Вам также может понравиться