博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分数四则运算器
阅读量:5345 次
发布时间:2019-06-15

本文共 4154 字,大约阅读时间需要 13 分钟。

好的,先弄出个类来,代码如下:
ContractedBlock.gifExpandedBlockStart.gifView Code
 
1 class fraction
2 {
3  private:
4 int numerator; //分子
5 int denominator; //分母
6 public:
7 fraction(int x = 0, int y = 1);
8 ~fraction();
9
10 const fraction add(const fraction w);
11 const fraction add(int k); // " + "
12
13 const fraction sub(const fraction w); // " - "
14 const fraction sub(int k);
15
16 const fraction mul(const fraction w); // " * "
17 const fraction mul(int k);
18
19 const fraction div(const fraction w); // " / "
20 const fraction div(int k);
21
22 int commonden(void);
23 void show(void);
24
25 //增加的成员函数
26 void setn(int x); //设定分子
27 void setd(int y); //设定分母
28 int getn(void)const;
29 int getd(void)const;
30 };
各成员实现如下:
ContractedBlock.gif
ExpandedBlockStart.gif
View Code
 
1
//
构造函数
2
fraction::fraction(
int
x,
int
y)
3
{
4
  numerator
=
x;
5
  
if
(y
==
0
)
6
  {
7
    cout
<<
"
分母为0
"
<<
endl;
8
    exit(
0
);
9
  }
10
  denominator
=
y;
11
}
12
13
fraction::
~
fraction()
14
{
15
  
//
虚构函数
16
}
17
//
加法
18
const
fraction fraction::add(
const
fraction w)
19
{
20
fraction z;
21
z.numerator
=
numerator
*
w.denominator
+
w.numerator
*
denominator;
22
z.denominator
=
denominator
*
w.numerator;
23
return
z;
24
}
25
26
//
成员函数的重载
27
//
分数 + 整数
28
const
fraction fraction::add(
int
k)
29
{
30
fraction z;
31
z.numerator
=
numerator
+
k
*
denominator;
32
z.denominator
=
denominator;
33
return
z;
34
}
35
36
//
减法
37
const
fraction fraction::sub(
const
fraction w)
38
{
39
fraction z;
40
z.numerator
=
numerator
*
w.denominator
-
w.numerator
*
denominator;
41
z.denominator
=
denominator
*
w.numerator;
42
return
z;
43
}
44
45
//
成员函数的重载
46
//
分数 - 整数
47
const
fraction fraction::sub(
int
k)
48
{
49
fraction z;
50
z.numerator
=
numerator
-
k
*
denominator;
51
z.denominator
=
denominator;
52
return
z;
53
}
54
55
//
乘法
56
const
fraction fraction::mul(
const
fraction w)
57
{
58
fraction z;
59
z.numerator
=
numerator
*
w.numerator;
60
z.denominator
=
denominator
*
w.denominator;
61
return
z;
62
}
63
64
//
成员函数的重载
65
//
分数 * 整数
66
const
fraction fraction::mul(
int
k)
67
{
68
fraction z;
69
z.numerator
=
k
*
numerator;
70
z.denominator
=
denominator;
71
return
z;
72
}
73
74
//
除法
75
const
fraction fraction::div(
const
fraction w)
76
{
77
fraction z;
78
if
(numerator
==
0
||
w.numerator
==
0
)
79
{
80
cout
<<
"
两个分子为零的分数相除没有意义
"
<<
endl;
81
exit(
0
);
82
}
83
z.numerator
=
numerator
*
w.denominator;
84
z.denominator
=
denominator
*
w.numerator;
85
return
z;
86
}
87
88
//
成员函数的重载
89
//
分数 / 整数
90
const
fraction fraction::div(
int
k)
91
{
92
  fraction z;
93
if
(numerator
==
0
||
k
==
0
)
94
{
95
cout
<<
"
两个分子为零的分数相除没有意义
"
<<
endl;
96
exit(
0
);
97
}
98
z.numerator
=
numerator;
99
z.denominator
=
k
*
denominator;
100
return
z;
101
}
102
103
//
函数功能:使输出的分数为真分数
104
int
fraction::commonden(
void
)
105
{
106
int
m,n,p;
107
m
=
denominator;
108
n
=
numerator;
109
do
110
{
111
p
=
m
%
n;
112
m
=
n;
113
n
=
p;
114
}
while
(p
!=
0
);
115
return
m;
116
}
117
118
void
fraction::show(
void
)
119
{
120
if
(numerator
==
0
)
121
{
122
cout
<<
"
= 0
"
<<
endl;
123
}
124
else
125
{
126
if
(numerator
==
denominator)
127
{
128
cout
<<
"
= 1
"
<<
endl;
129
}
130
else
131
{
132
cout
<<
"
=
"
<<
numerator
/
commonden()
<<
"
/
"
<<
denominator
/
commonden()
<<
endl;
133
}
134
}
135
}
136
137
void
fraction::setn(
int
x)
//
设定分子
138
{
139
numerator
=
x;
140
}
141
void
fraction::setd(
int
y)
//
设定分母
142
{
143
denominator
=
y;
144
}
145
int
fraction::getn(
void
)
const
146
{
147
return
numerator;
148
}
149
int
fraction::getd(
void
)
const
150
{
151
return
denominator;
152
}
好了,写个主函数来测试下
ContractedBlock.gifExpandedBlockStart.gifView Code
 
void main()
{
  fraction w(
6,7),t(9,5),d;
cout
<< "(6/7) + (9/5)";
d
= w.add(t);
d.show();
cout
<<endl;
cout
<< "(6/7) + 1"; // 6 13
d = w.add(1); // - + 1 = -
d.show(); // 7 7
cout <<endl;
cout
<< "(6/7) - (9/5)";
d
= w.sub(t);
d.show();
cout
<<endl;
cout
<< "(6/7) - 1";
d
= w.sub(1);
d.show();
cout
<<endl;
cout
<< "(6/7) * (9/5)";
d
= w.mul(t);
d.show();
cout
<<endl;
cout
<< "(6/7) * 2";
d
= w.mul(2);
d.show();
cout
<<endl;
cout
<< "(6/7) / (9/5)";
d
= w.div(t);
d.show();
cout
<<endl;
cout
<< "(6/7) / 2";
d
= w.div(2);
d.show();
cout
<<endl;
 
return ;
}
来看看测试结果吧!

转载于:https://www.cnblogs.com/hanxi/archive/2011/03/08/1977610.html

你可能感兴趣的文章
随手练——HDU 5015 矩阵快速幂
查看>>
malloc() & free()
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
关于这次软件以及pda终端的培训
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
新手村之循环!循环!循环!
查看>>
线程安全问题
查看>>
linux的子进程调用exec( )系列函数
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>