/* * rational.cpp * * Created on: 28.02.2013 * Author: trifon */ #include using namespace std; #include "rational.h" void read(); /* Rational::Rational() { // this->numer = 0; // this->denom = 0; // !!!!! this = that; numer = 0; denom = 1; read(); //::Rational::read(); //Rational::read() // ::read(); } */ Rational::Rational(int n, int d) { numer = n; denom = d; reduce(); } Rational::Rational(double d) : numer(d*10), denom(10) {} /* int Rational::getNumerator() const { return numer; } */ inline int Rational::getDenominator() const { return denom; } void Rational::print() const { cout << getNumerator() << '/' << getDenominator() << endl; // cout << numer << '/' << getDenominator() << endl; //cout << getNumeratorPlus(x) << '/' << getDenominator() << endl; //cout << numer + x << '/' << getDenominator() << endl; } void Rational::read() { cout << "Числител: "; cin >> numer; cout << "Знаменател: "; cin >> denom; reduce(); } Rational add(Rational p, Rational q) { return Rational( p.getNumerator() * q.getDenominator() + p.getDenominator() * q.getNumerator(), p.getDenominator() * q.getDenominator()); } int Rational::GCD::calculate() { if (x == 0 || y == 0) return 1; while (x != y) if (x > y) x -= y; else y -= x; return x; } void Rational::reduce() { GCD gcd(numer, denom); int g = gcd.calculate(); numer /= g; denom /= g; } void read() { cout << "Аз съм функцията read()\n"; } Rational::Rational(Rational const& r) : numer(r.numer), denom(r.denom) { cout << "Rational copy constructor for "; r.print(); } double Rational::operator()() const { return (double)numer /(double)denom; } Rational::operator int() const { return numer/denom; } Rational::operator double() const { return (*this)(); return this->operator()(); return operator()(); }