定义分数(有理数)类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;
a.set(x, y);
a.show();
cout << a.real() << endl;
return 0;
}
输入
分数的分子和分母,整数,用空格隔开,分母不为0。
输出两行,一行为分数形式,一行为分数的小数形式(自然近似)。
提示(1)约分函数格式为void reduce(void),直接对成员变量约分,不需参数,不需返回值;
(2)set()中为数据成员赋值后直接调用reduce()即可。
(3)分母为负数时,分子、分母都变号,就将符号转到分子上,如分子分母分别为1和-2,都变号,为-1和2。
输入输出示例输入 | 输出 | |
示例 1 | | |
#include
#include
#include
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<> x >> y;
a.set(x, y);
a.show();
cout << a.real() << endl;
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)