描述
定义分数(有理数)类FRACTION,分子和分母是其数据成员,int,私有;成员函数有set()设置分子和分母,Real()返回其小数形式,show()显示分数,公有。成员函数reduce()实现约分,私有。
编写主函数,使用FRACTION类定义一个对象表示分数,输入分数的分子和分母,设置分数对象,显示分数,显示分数的小数形式。
注意
(1)程序自动约分,如输入2 4 ,显示分数1/2;
(2)负数设置在分子上,如输入1 -3 显示的分数为 -1/3;
(3)分子为0时,不约分,如输入0 8 ,显示分数0/8。
主函数如下:
int main() {
FRACTION a;
int x, y;
cin >> x >> y;
(x, y);
();
cout << () << endl;
return 0;
}
输入
分数的分子和分母,整数,用空格隔开,分母不为0。
输出
两行,一行为分数形式,一行为分数的小数形式(自然近似)。
提示
(1)约分函数格式为void reduce(void),直接对成员变量约分,不需参数,不需返回值;
(2)set()中为数据成员赋值后直接调用reduce()即可。
(3)分母为负数时,分子、分母都变号,就将符号转到分子上,如分子分母分别为1和-2,都变号,为-1和2。
输入输出示例
输入 | 输出 | |
示例 1 | |
|
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
class FRACTION{
private:
int fenzi,fenmu;
public:
void set(int a,int b){
int c=__gcd(a,b);//求出最大公因数。
a=a/c;
b=b/c;
if(b<0){
b=abs(b);
a=-(a);
}
this->fenzi=a;
this->fenmu=b;
}
double real(){
double x,y;
x=fenzi;
y=fenmu;
return x/y;
}
void show(){
cout<<fenzi<<"/"<<fenmu<<endl;
}
};
int main() {
FRACTION a;
int x, y;
cin >> x >> y;
(x, y);
();
cout << () << endl;
return 0;
}