1. 编程:建立一个分数类。分数类的数据成员包括分子和分母,成员函数包括显示、输入、约分、通分、比较、加、减、乘、除、求相反数。分数类定义如下:
时间: 2023-07-10 19:40:54 浏览: 335
好的,我可以帮你建立一个分数类。以下是分数类的定义和实现:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
class Fraction{
private:
int numerator; // 分子
int denominator; // 分母
public:
Fraction(int numerator = 0, int denominator = 1){
this->numerator = numerator;
this->denominator = denominator;
}
void display(){ // 显示分数
cout << numerator << "/" << denominator << endl;
}
void input(){ // 输入分数
cout << "请输入分子和分母,以空格分隔:" << endl;
cin >> numerator >> denominator;
}
void reduce(){ // 约分
int gcd = __gcd(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
}
void toCommonDenominator(Fraction& f){ // 通分
int lcm = denominator * f.denominator / __gcd(denominator, f.denominator);
numerator *= lcm / denominator;
denominator = lcm;
f.numerator *= lcm / f.denominator;
f.denominator = lcm;
}
int compare(Fraction& f){ // 比较
toCommonDenominator(f);
return numerator - f.numerator;
}
Fraction add(Fraction& f){ // 加
Fraction result;
toCommonDenominator(f);
result.numerator = numerator + f.numerator;
result.denominator = denominator;
result.reduce();
return result;
}
Fraction subtract(Fraction& f){ // 减
Fraction result;
toCommonDenominator(f);
result.numerator = numerator - f.numerator;
result.denominator = denominator;
result.reduce();
return result;
}
Fraction multiply(Fraction& f){ // 乘
Fraction result;
result.numerator = numerator * f.numerator;
result.denominator = denominator * f.denominator;
result.reduce();
return result;
}
Fraction divide(Fraction& f){ // 除
Fraction result;
result.numerator = numerator * f.denominator;
result.denominator = denominator * f.numerator;
result.reduce();
return result;
}
Fraction opposite(){ // 求相反数
return Fraction(-numerator, denominator);
}
};
```
在上面的代码中,我们定义了一个名为`Fraction`的类,它有两个私有数据成员`numerator`和`denominator`,表示分数的分子和分母。公有成员函数包括:
- `Fraction(int numerator = 0, int denominator = 1)`:构造函数,用于创建分数对象。默认构造函数创建的是0/1。
- `void display()`:显示分数。
- `void input()`:输入分数。
- `void reduce()`:约分。
- `void toCommonDenominator(Fraction& f)`:通分。
- `int compare(Fraction& f)`:比较两个分数的大小,返回值为0表示两个分数相等,大于0表示当前分数大于f,小于0表示当前分数小于f。
- `Fraction add(Fraction& f)`:加上另一个分数f。
- `Fraction subtract(Fraction& f)`:减去另一个分数f。
- `Fraction multiply(Fraction& f)`:乘以另一个分数f。
- `Fraction divide(Fraction& f)`:除以另一个分数f。
- `Fraction opposite()`:求相反数。
你可以通过以下方式使用这些函数:
```cpp
int main(){
Fraction f1(2, 6), f2(3, 4);
f1.display(); // 输出2/6
f1.reduce(); // 约分
f1.display(); // 输出1/3
f1.toCommonDenominator(f2); // 通分
f1.display(); // 输出4/12
f2.display(); // 输出9/12
int cmp = f1.compare(f2); // 比较大小
if (cmp == 0){
cout << "两个分数相等" << endl;
}
else if (cmp > 0){
cout << "f1大于f2" << endl;
}
else{
cout << "f1小于f2" << endl;
}
Fraction f3 = f1.add(f2); // 加法
f3.display(); // 输出13/12
Fraction f4 = f1.subtract(f2); // 减法
f4.display(); // 输出-5/12
Fraction f5 = f1.multiply(f2); // 乘法
f5.display(); // 输出3/16
Fraction f6 = f1.divide(f2); // 除法
f6.display(); // 输出4/9
Fraction f7 = f1.opposite(); // 求相反数
f7.display(); // 输出-1/3
return 0;
}
```
这段代码创建了两个分数对象f1和f2,然后演示了分数类的各种函数的使用方法。
阅读全文