RationalNumber class 的运算符重载
来源:互联网 发布:弯沉值自动计算软件 编辑:程序博客网 时间:2024/05/17 03:37
//Rational.h
#ifndef RATIONAL_H
#define RATIONAL_H
#define RATIONAL_H
class Rational {
public:
Rational( int = 0, int = 1 );
Rational operator+( const Rational & ) const;
Rational operator-( const Rational & ) const;
Rational operator*( const Rational & ) const;
Rational operator/( const Rational & ) const;
bool operator==( const Rational & ) const;
bool operator!=( const Rational & ) const;
bool operator<( const Rational & ) const;
bool operator<=( const Rational & ) const;
bool operator>( const Rational & ) const;
bool operator>=( const Rational & ) const;
void printRational ();
private:
int numerator;
int denominator;
void reduction();
};
public:
Rational( int = 0, int = 1 );
Rational operator+( const Rational & ) const;
Rational operator-( const Rational & ) const;
Rational operator*( const Rational & ) const;
Rational operator/( const Rational & ) const;
bool operator==( const Rational & ) const;
bool operator!=( const Rational & ) const;
bool operator<( const Rational & ) const;
bool operator<=( const Rational & ) const;
bool operator>( const Rational & ) const;
bool operator>=( const Rational & ) const;
void printRational ();
private:
int numerator;
int denominator;
void reduction();
};
#endif
// Rational.cpp
#include <iostream>
#include "Rational.h"
using namespace std;
#include "Rational.h"
using namespace std;
Rational::Rational( int n, int d ) {
numerator = n;
denominator = d;
reduction();
}
numerator = n;
denominator = d;
reduction();
}
Rational Rational::operator+( const Rational &a ) const{
Rational t;
t.numerator = a.numerator * denominator;
t.numerator += a.denominator * numerator;
t.denominator = a.denominator * denominator;
t.reduction();
return t;
}
Rational t;
t.numerator = a.numerator * denominator;
t.numerator += a.denominator * numerator;
t.denominator = a.denominator * denominator;
t.reduction();
return t;
}
Rational Rational::operator-( const Rational &s ) const{
Rational t;
t.numerator = s.denominator * numerator;
t.numerator -= denominator * s.numerator;
t.denominator = s.denominator * denominator;
t.reduction();
return t;
}
Rational t;
t.numerator = s.denominator * numerator;
t.numerator -= denominator * s.numerator;
t.denominator = s.denominator * denominator;
t.reduction();
return t;
}
Rational Rational::operator*( const Rational &m ) const{
Rational t;
t.numerator = m.numerator * numerator;
t.denominator = m.denominator * denominator;
t.reduction();
return t;
}
Rational t;
t.numerator = m.numerator * numerator;
t.denominator = m.denominator * denominator;
t.reduction();
return t;
}
Rational Rational::operator/( const Rational &v ) const{
Rational t;
t.numerator = v.denominator * numerator;
t.denominator = denominator * v.numerator;
t.reduction();
return t;
}
Rational t;
t.numerator = v.denominator * numerator;
t.denominator = denominator * v.numerator;
t.reduction();
return t;
}
bool Rational::operator==( const Rational &a ) const{
if ( numerator == a.numerator && denominator == a.denominator)
return true;
else
return false;
}
if ( numerator == a.numerator && denominator == a.denominator)
return true;
else
return false;
}
bool Rational::operator!=( const Rational &b ) const{
if ( numerator != b.numerator || denominator != b.denominator)
return true;
else
return false;
}
if ( numerator != b.numerator || denominator != b.denominator)
return true;
else
return false;
}
bool Rational::operator<( const Rational &c ) const{
if ( numerator / denominator < c.numerator / c.denominator)
return true;
else
return false;
}
if ( numerator / denominator < c.numerator / c.denominator)
return true;
else
return false;
}
bool Rational::operator<=( const Rational &d ) const{
if ( numerator / denominator <= d.numerator / d.denominator)
return true;
else
return false;
}
if ( numerator / denominator <= d.numerator / d.denominator)
return true;
else
return false;
}
bool Rational::operator>( const Rational &e ) const{
if ( numerator / denominator > e.numerator / e.denominator)
return true;
else
return false;
}
if ( numerator / denominator > e.numerator / e.denominator)
return true;
else
return false;
}
bool Rational::operator>=( const Rational &f ) const{
if ( numerator / denominator >= f.numerator / f.denominator)
return true;
else
return false;
}
void Rational::printRational () {
if ( denominator == 0 )
cout << "\nDIVIDE BY ZERO ERROR!!!" << '\n';
else if ( numerator == 0 )
cout << 0;
else
cout << numerator << '/' << denominator;
}
void Rational::reduction() {
int largest;
largest = numerator > denominator ? numerator : denominator;
if ( numerator / denominator >= f.numerator / f.denominator)
return true;
else
return false;
}
void Rational::printRational () {
if ( denominator == 0 )
cout << "\nDIVIDE BY ZERO ERROR!!!" << '\n';
else if ( numerator == 0 )
cout << 0;
else
cout << numerator << '/' << denominator;
}
void Rational::reduction() {
int largest;
largest = numerator > denominator ? numerator : denominator;
int gcd = 0;
for ( int loop = 2; loop <= largest; loop++ )
if ( numerator % loop == 0 && denominator % loop == 0 )
gcd = loop;
if ( numerator % loop == 0 && denominator % loop == 0 )
gcd = loop;
if (gcd != 0) {
numerator /= gcd;
denominator /= gcd;
}
}
numerator /= gcd;
denominator /= gcd;
}
}
//main.cpp
#include <iostream>
#include "Rational.h"
using namespace std;
#include "Rational.h"
using namespace std;
int main()
{
Rational c( 3, 2 ), d( 5, 9 ), x;
{
Rational c( 3, 2 ), d( 5, 9 ), x;
c.printRational();
cout << " + " ;
d.printRational();
cout << " = ";
x = c + d;
x.printRational();
cout << " + " ;
d.printRational();
cout << " = ";
x = c + d;
x.printRational();
cout << '\n';
c.printRational();
cout << " - " ;
d.printRational();
cout << " = ";
x = c - d;
x.printRational();
c.printRational();
cout << " - " ;
d.printRational();
cout << " = ";
x = c - d;
x.printRational();
cout << '\n';
c.printRational();
cout << " * " ;
d.printRational();
cout << " = ";
x = c * d;
x.printRational();
c.printRational();
cout << " * " ;
d.printRational();
cout << " = ";
x = c * d;
x.printRational();
cout << '\n';
c.printRational();
cout << " / " ;
d.printRational();
cout << " = ";
x = c / d;
x.printRational();
c.printRational();
cout << " / " ;
d.printRational();
cout << " = ";
x = c / d;
x.printRational();
cout << '\n';
c.printRational();
cout << " is:\n";
c.printRational();
cout << " is:\n";
cout << ( ( c > d ) ? " > " : " <= " );
d.printRational();
cout << " according to the overloaded > operator\n";
d.printRational();
cout << " according to the overloaded > operator\n";
cout << ( ( c < d ) ? " < " : " >= " );
d.printRational();
cout << " according to the overloaded < operator\n";
d.printRational();
cout << " according to the overloaded < operator\n";
cout << ( ( c >= d ) ? " >= " : " < " );
d.printRational();
cout << " according to the overloaded >= operator\n";
d.printRational();
cout << " according to the overloaded >= operator\n";
cout << ( ( c <= d ) ? " <= " : " > " );
d.printRational();
cout << " according to the overloaded <= operator\n";
cout << ( ( c == d ) ? " == " : " != " );
d.printRational();
cout << " according to the overloaded == operator\n";
d.printRational();
cout << " according to the overloaded <= operator\n";
cout << ( ( c == d ) ? " == " : " != " );
d.printRational();
cout << " according to the overloaded == operator\n";
cout << ( ( c != d ) ? " != " : " == " );
d.printRational();
cout << " according to the overloaded != operator" << endl;
}
d.printRational();
cout << " according to the overloaded != operator" << endl;
}
0 0
- RationalNumber class 的运算符重载
- 【python】-class可重载的运算符
- C++ class template中,重载输出运算符(<<)的方法
- 6.3 Python class 运算符重载
- 运算符的重载:[],(),->;
- 运算符的重载
- 运算符的重载
- 运算符的重载
- 运算符的重载
- “[]”运算符的重载
- 运算符的重载
- 运算符的重载
- 运算符的重载
- 运算符的重载
- 重载的<<运算符
- 运算符的重载
- 重载的+运算符
- 运算符的重载
- 相同事件重复率太高?事件委托来帮你
- Tecohoo VD-182U 全高清视频会议摄像机
- 融合MBO、BSC、KPI与360°:构建完…
- MACD高端用法
- gdajie
- RationalNumber class 的运算符重载
- 各省最低工资标准、各省在岗职工平…
- ROADS
- java.util.concurrent并发包诸类概览
- 统计联网直报平台,因证书异常不能…
- 迅雷下载百度文库内容时显示URL不…
- P(AB)与P(B|A)区别!!!!!!
- 将博客搬至博客园
- Matlab代码转C++(二) —— mwArray