设计一个分数计算器,可以用1/3的形式输入分数
时间: 2024-02-25 12:59:50 浏览: 128
好的,我可以为您设计一个分数计算器,支持1/3等形式的分数输入。以下是一个简单的实现示例:
```
// 定义分数结构体
struct Fraction {
int numerator; // 分子
int denominator; // 分母
};
// 分数加法
Fraction add(Fraction f1, Fraction f2) {
Fraction result;
result.denominator = f1.denominator * f2.denominator;
result.numerator = f1.numerator * f2.denominator + f2.numerator * f1.denominator;
return result;
}
// 分数乘法
Fraction multiply(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = f1.numerator * f2.numerator;
result.denominator = f1.denominator * f2.denominator;
return result;
}
// 分数约分
void reduce(Fraction &f) {
int gcd = __gcd(f.numerator, f.denominator);
f.numerator /= gcd;
f.denominator /= gcd;
}
int main() {
// 读入两个分数
string s1, s2;
cin >> s1 >> s2;
// 将输入的分数转换成结构体形式
Fraction f1, f2;
sscanf(s1.c_str(), "%d/%d", &f1.numerator, &f1.denominator);
sscanf(s2.c_str(), "%d/%d", &f2.numerator, &f2.denominator);
// 分数加法
Fraction sum = add(f1, f2);
reduce(sum);
cout << "Sum: " << sum.numerator << "/" << sum.denominator << endl;
// 分数乘法
Fraction product = multiply(f1, f2);
reduce(product);
cout << "Product: " << product.numerator << "/" << product.denominator << endl;
return 0;
}
```
以上代码中,我们定义了一个分数结构体 `Fraction`,其中包含分子和分母两个成员变量。接着,我们定义了三个函数,分别用于分数加法、分数乘法以及分数约分。在 `main` 函数中,我们先读入两个字符串形式的分数 `s1` 和 `s2`,然后用 `sscanf` 函数将其转换成结构体形式,再调用加法和乘法函数进行计算,最后输出结果。需要注意的是,为了支持1/3等形式的分数输入,我们使用了 `sscanf` 函数进行格式化输入。
阅读全文