对于我的任务,我必须做一个 Rational 类并添加运算符。如果分母的输入为 1 或分子为 0,则输出只需为分子。所以我想初始化我的复制构造函数,但我并没有真正成功(你可以看到我把它放在评论中)或者我需要改变我的打印功能?所以如果你能帮助我..谢谢你
//Rational.h
#ifndef Rational_h
#define Rational_h
#include <iostream>
using namespace std;
class Rational{
public:
//default cstr
Rational(int myNumerator=1, int myDenominator=1):numerator(myNumerator),denominator(myDenominator){}
//copy cstr
Rational (Rational const &num):numerator(num.getNumerator()),denominator(num.getDenominator()){
/*if (denominator==1 or numerator==0) {
// num=numerator;
}*/
}
void setNumerator(int);
void setDenominator(int);
int getNumerator()const;
int getDenominator()const;
void print();
void reduction(int,int);
Rational operator/(Rational);
private:
int numerator;
int denominator;
};
#endif /* Rational_h */
// Rational.cpp
void Rational::setNumerator(int myNumerator){
numerator=myNumerator;
}
void Rational::setDenominator(int myDenominator){
if (myDenominator==0){
cout<<"ERROR"<<endl;
denominator=1;
}
else
denominator=myDenominator;
}
int Rational::getNumerator()const{
return numerator;
}
void Rational::print(){
cout<<numerator<<"/"<<denominator<<endl;
}
void Rational::reduction(int numerator,int denominator)
{
for (int i = denominator * numerator; i > 1; i--)
if ((denominator % i == 0) && (numerator % i == 0)) {
denominator /= i;
numerator /= i;
}
}
Rational Rational::operator/(Rational num){
Rational newNum;
newNum.numerator=numerator*num.denominator;
newNum.denominator=denominator*num.numerator;
newNum.reduction(newNum.numerator, newNum.denominator);
return newNum;
}