⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rational.cpp

📁 一个有理数可以表示成分子与分母都是整数的一个分数。定义一个表示有理数的类Rational(包括方法的实现)
💻 CPP
字号:
// Rational.cpp: implementation of the Rational class.
//
//////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include "Rational.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////


Rational::~Rational()
{

}

Rational::Rational(int nparNumerator, int nparDenominator)
{
	nNumerator = nparNumerator;
	if(0 != nparDenominator)
		nDenominator = nparDenominator;
}

Rational Rational::operator +(Rational rNum)
{
	Rational result;
	result.nNumerator = nNumerator * rNum.nDenominator + nDenominator * rNum.nNumerator;
	result.nDenominator = nDenominator * rNum.nDenominator;
	result.Simplify();
	return result;
}

Rational Rational::operator *(Rational rNum)
{
	Rational result;
	result.nNumerator  = nNumerator * rNum.nNumerator;
	result.nDenominator = nDenominator * rNum.nDenominator;
	result.Simplify();
	return result;
}

int Rational::CommonDivsor(int num1, int num2)
{
	int nDivisor = 1;
	if(num1<0 && num2<0) nDivisor *= -1;
	if(num1<0) num1 *= -1;
	if(num2<0) num2 *= -1;
	if(num2 > num1) 
	{
		int temp;
		temp = num1;
		num1 = num2;
		num1 = temp;
	}
	
	while (num2>0 && num1>0) {
		if(num1>num2)
			num1 %= num2;
		else num2%= num1;
	}

	nDivisor *= num1>0 ? num1 : num2;

	return nDivisor;
}




Rational::Rational(Rational &rNum)
{
	*this = rNum;	
}

Rational& Rational::operator=(Rational &rNum)
{
	nNumerator = rNum.nNumerator;
	nDenominator = rNum.nDenominator;
	return *this;
}

void Rational::Simplify()
{
	int nDivisor = CommonDivsor(nNumerator,nDenominator);
	nNumerator /= nDivisor;
	nDenominator /= nDivisor;
}

char* Rational::value()
{
	//char *s = new char[25];
	sprintf(str,"%d/%d",nNumerator,nDenominator);
	return str;
}

bool Rational::operator ==(Rational rNum)
{
	Rational r1;
	r1 = *this;
	r1.Simplify();
	rNum.Simplify();
	if( r1.nDenominator == rNum.nDenominator && r1.nNumerator == rNum.nNumerator )
		return 1;
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -