// Program rational.cpp
#include <iostream>
#include <string>
#include "rational.h"
using namespace std;
// default constructor
Rational::Rational() {
SetNumerator(0);
SetDenominator(1);
}
// (numer, denom) constructor
Rational::Rational(int numer, int denom) {
SetNumerator(numer);
SetDenominator(denom);
}
// Rational: copy constructor
Rational::Rational(const Rational &r) {
int a = r.GetNumerator();
int b = r.GetDenominator();
SetNumerator(a);
SetDenominator(b);
}
// Rational: destructor
Rational::~Rational() {
// no body needed
}
// get the numerator
int Rational::GetNumerator() const {
return NumeratorValue;
}
// get the denominator
int Rational::GetDenominator() const {
return DenominatorValue;
}
// set the numerator
void Rational::SetNumerator(int numer) {
NumeratorValue = numer;
}
// set the denominator
void Rational::SetDenominator(int denom) {
if (denom != 0) {
DenominatorValue = denom;
}
else {
cerr << "Illegal denominator: " << denom
<< "using 1" << endl;
DenominatorValue = 1;
}
}
// adding Rationals
Rational Rational::Add(const Rational &r) const {
int a = GetNumerator();
int b = GetDenominator();
int c = r.GetNumerator();
int d = r.GetDenominator();
return Rational(a*d + b*c, b*d);
}
// subtracting Rationals
Rational Rational::Sub(const Rational &r) const {
int a = GetNumerator();
int b = GetDenominator();
int c = r.GetNumerator();
int d = r.GetDenominator();
return Rational(a*d - b*c, b*d);
}
// multiplying Rationals
Rational Rational::Multiply(const Rational &r) const {
int a = GetNumerator();
int b = GetDenominator();
int c = r.GetNumerator();
int d = r.GetDenominator();
return Rational(a*c, b*d);
}
// dividing Rationals
Rational Rational::Divide(const Rational &r) const {
int a = GetNumerator();
int b = GetDenominator();
int c = r.GetNumerator();
int d = r.GetDenominator();
return Rational(a*d, b*c);
}
// Rational: assignment operator
Rational& Rational::operator=(const Rational &r) {
int a = r.GetNumerator();
int b = r.GetDenominator();
SetNumerator(a);
SetDenominator(b);
return *this;
}
/*
void Rational::operator=(const Rational &r) {
int a = r.GetNumerator();
int b = r.GetDenominator();
SetNumerator(a);
SetDenominator(b);
return;
}
*/
// inserting a Rational
void Rational::Insert(ostream &sout) const {
sout << GetNumerator() << '/' << GetDenominator();
return;
}
// extracting a Rational
void Rational::Extract(istream &sin) {
int numer;
int denom;
char slash;
sin >> numer >> slash >> denom;
SetNumerator(numer);
SetDenominator(denom);
return;
}
// adding Rationals
Rational operator+(const Rational &r, const Rational &s) {
return r.Add(s);
}
// subtracting Rationals
Rational operator-(const Rational &r, const Rational &s) {
return r.Sub(s);
}
// multiplying Rationals
Rational operator*(const Rational &r, const Rational &s) {
return r.Multiply(s);
}
// dividing Rationals
Rational operator/(const Rational &r, const Rational &s) {
return r.Divide(s);
}
// inserting a Rational
ostream& operator<<(ostream &sout, const Rational &r) {
r.Insert(sout);
return sout;
}
// extracting a Rational
istream& operator>>(istream &sin, Rational &r) {
r.Extract(sin);
return sin;
}
int main() {
Rational r;
Rational s;
cout << "Enter 1st rational number (a/b): ";
cin >> r;
cout << "Enter 2nd rational number (a/b): ";
cin >> s;
Rational tr(r);
Rational ts = s;
Rational tts;
tts = s;
ts = tts = r;
Rational Sum = r + s;
Rational Difference = r - s;
Rational Product = r * s;
Rational Ratio = r / s;
cout << r << " + " << s << " = " << Sum << endl;
cout << r << " - " << s << " = " << Difference << endl;
cout << r << " * " << s << " = " << Product << endl;
cout << r << " / " << s << " = " << Ratio << endl;
return 0;
}
C++程序设计讲义
4星 · 超过85%的资源 需积分: 0 182 浏览量
2008-03-12
22:18:00
上传
评论
收藏 2.9MB RAR 举报
coding码场
- 粉丝: 2249
- 资源: 21
最新资源
- VSc++编程助手1.0 - 1
- 基于matlab的说话人语音识别源码+PPT+报告(优质项目).zip
- 语音识别基于matlab说话人识别系统源码+报告PPT(高分优质项目).zip
- 毕业设计: 校园失物招领小程序的设计与实现论文(源码 + 数据库 + 说明文档)
- 美易ME-DUI自绘模块3.3-易语言模块
- 毕业设计:小程序消防知识每天学(源码 + 数据库 + 说明文档)
- 2024-NEW.zip
- 软件.zip
- 华为FPGA设计技巧FPGA设计规范设计经验设计流程指南华为面经硬件工程师手册等资料(15个).zip
- 毕业设计:基于微信小程序大学校园二手教材与书籍拍卖系统(源码 + 数据库 + 说明文档)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈