设计一个分数类Fractor,要求有构造函数、输出函数,重载+、-、*、 /、++(前缀后缀)运算符,请写出完整的程序。
时间: 2024-06-05 08:06:14 浏览: 14
#include<iostream>
using namespace std;
class Fractor{
int n,d;
public:
Fractor(int nn=0,int dd=1){
n=nn;
d=dd;
reduce();
}
void reduce(){
int gcd=1,absn=abs(n),absd=abs(d);
for(int i=2;i<=min(absn,absd);i++){
if(absn%i==0&&absd%i==0){
gcd=i;
}
}
if(gcd!=1){
n=n/gcd;
d=d/gcd;
}
}
void print(){
if(n==0){
cout<<0<<endl;
}
else if(d==1){
cout<<n<<endl;
}
else{
cout<<n<<"/"<<d<<endl;
}
}
Fractor operator+(Fractor f2){
Fractor res(n*f2.d+f2.n*d,d*f2.d);
return res;
}
Fractor operator-(Fractor f2){
Fractor res(n*f2.d-f2.n*d,d*f2.d);
return res;
}
Fractor operator*(Fractor f2){
Fractor res(n*f2.n,d*f2.d);
return res;
}
Fractor operator/(Fractor f2){
Fractor res(n*f2.d,d*f2.n);
return res;
}
Fractor operator++(){
n=n+d;
reduce();
return *this;
}
Fractor operator++(int){
Fractor temp(*this);
n=n+d;
reduce();
return temp;
}
Fractor operator--(){
n=n-d;
reduce();
return *this;
}
Fractor operator--(int){
Fractor temp(*this);
n=n-d;
reduce();
return temp;
}
};
int main(){
Fractor f1(1,2),f2(1,3);
Fractor f3=f1+f2;
Fractor f4=f1-f2;
Fractor f5=f1*f2;
Fractor f6=f1/f2;
f1.print();
f2.print();
f3.print();
f4.print();
f5.print();
f6.print();
++f1;
f1.print();
f1++;
f1.print();
--f1;
f1.print();
f1--;
f1.print();
return 0;
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)