c++设计一个合理的分数计算器,可以以分数的形式输入分数
时间: 2024-02-24 13:59:37 浏览: 130
好的,我可以为您提供一个简单的C++代码示例,用于计算两个分数的加、减、乘和除。
```c++
#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>
using namespace std;
// 定义分数结构体
struct Fraction {
int numerator; // 分子
int denominator; // 分母
};
// 求最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 分数化简
Fraction simplify(Fraction f) {
int div = gcd(f.numerator, f.denominator);
f.numerator /= div;
f.denominator /= div;
return f;
}
// 分数加法
Fraction add(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = f1.numerator * f2.denominator + f2.numerator * f1.denominator;
result.denominator = f1.denominator * f2.denominator;
return simplify(result);
}
// 分数减法
Fraction subtract(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = f1.numerator * f2.denominator - f2.numerator * f1.denominator;
result.denominator = f1.denominator * f2.denominator;
return simplify(result);
}
// 分数乘法
Fraction multiply(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = f1.numerator * f2.numerator;
result.denominator = f1.denominator * f2.denominator;
return simplify(result);
}
// 分数除法
Fraction divide(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = f1.numerator * f2.denominator;
result.denominator = f1.denominator * f2.numerator;
return simplify(result);
}
// 将字符串转换成分数
Fraction strToFraction(string str) {
Fraction f;
stringstream ss(str);
string num, den, tmp;
getline(ss, num, '/');
getline(ss, den);
f.numerator = atoi(num.c_str());
f.denominator = atoi(den.c_str());
return simplify(f);
}
// 将分数转换成字符串
string fractionToStr(Fraction f) {
stringstream ss;
ss << f.numerator << "/" << f.denominator;
return ss.str();
}
int main() {
string str1, str2;
cout << "请输入第一个分数(如1/2):";
cin >> str1;
Fraction f1 = strToFraction(str1);
cout << "请输入第二个分数(如3/4):";
cin >> str2;
Fraction f2 = strToFraction(str2);
cout << endl;
cout << "分数加法:" << fractionToStr(add(f1, f2)) << endl;
cout << "分数减法:" << fractionToStr(subtract(f1, f2)) << endl;
cout << "分数乘法:" << fractionToStr(multiply(f1, f2)) << endl;
cout << "分数除法:" << fractionToStr(divide(f1, f2)) << endl;
return 0;
}
```
该程序中,我们使用了一个名为`Fraction`的结构体来表示分数,其中包含两个整数类型的成员变量`numerator`和`denominator`,分别表示分子和分母。我们定义了四个函数来实现分数的加、减、乘和除,同时也定义了两个辅助函数`strToFraction`和`fractionToStr`,用于将字符串转换成分数和将分数转换成字符串。在`main`函数中,我们首先让用户输入两个分数,然后调用相应的函数计算并输出结果。
注意,由于除法运算存在分母为0的情况,我们在程序中并没有对此进行特殊处理,而是假设用户不会输入0作为分母。在实际应用中,我们需要根据具体情况进行特殊处理。
阅读全文