lab 1.2 Source.cpp

← разместить еще код

Расшаренный код:

#include "Header.h"
#include <iostream>
using namespace std;
// блок сеттеров и геттеров
void Fraction::setNumerator(int num) { 
	numerator = num; 
}
void Fraction::setDenominator(int den) { 
	denominator = den; 
}
int Fraction::getNumerator() { 
	return numerator; 
}
int Fraction::getDenominator() { 
	return denominator; 
}
// конструктор об'экту
Fraction::Fraction(int num, int den) {
	numerator = num;
	denominator = den;
}
// функцii для скорочення дробу
int Fraction::NOD(int x, int y) {
	if (y == 0)
		return x;
	return NOD(y, x%y);
}
void Fraction::reduction() {
	int nod = NOD(numerator, denominator);
	numerator /= nod;
	denominator /= nod;
}
// блок перевантаження операторiв
Fraction& operator+ (Fraction &num, Fraction &num_2) {
	Fraction temp;
	if (num.denominator != num_2.denominator) {
		temp.denominator = num.denominator * num_2.denominator;
		temp.numerator = num.numerator * num_2.denominator + num_2.numerator * num.denominator;
	}
	else {
		temp.numerator = num.numerator + num_2.numerator;
		temp.denominator = num.denominator;
	}
	temp.reduction();
	return temp;
}

Fraction& operator- (Fraction &num, Fraction &num_2) {
	Fraction temp;
	if (num.denominator != num_2.denominator) {
		temp.denominator = num.denominator * num_2.denominator;
		temp.numerator = num.numerator * num_2.denominator - num_2.numerator * num.denominator;
	}
	else {
		temp.numerator = num.numerator - num_2.numerator;
		temp.denominator = num.denominator;
	}
	temp.reduction();
	return temp;
}

Fraction& operator* (Fraction &num, Fraction &num_2) {
	Fraction temp;
	temp.numerator = num.numerator * num_2.numerator;
	temp.denominator = num.denominator * num_2.denominator;
	temp.reduction();
	return temp;
}

Fraction& operator/ (Fraction &num, Fraction &num_2) {
	Fraction temp;
	temp.numerator = num.numerator * num_2.denominator;
	temp.denominator = num.denominator * num_2.numerator;
	temp.reduction();
	return temp;
}
// блок перевантаження операторiв введення/виведення в потiк
ostream& operator<< (ostream &out, Fraction &num) {
	out << num.getNumerator() << " / " << num.getDenominator() << endl;
	return out;
}
istream& operator>> (istream &in, Fraction &num) {
	in >> num.numerator;
	in >> num.denominator;
	return in;
}