c++ 分式化简。设计算法,将一个给定的真分数化简为最简分数形式,例如将6/8化简为3/4。
时间: 2024-11-06 21:20:38 浏览: 13
在C++中,设计一个简单的算法来对分数进行化简通常涉及到找到两个数的最大公约数(GCD)。以下是基本步骤:
1. **获取分子(numerator)和分母(denominator)**:首先,从输入中提取分子和分母。
2. **计算最大公约数(GCD)**:可以使用欧几里得算法(也称为辗转相除法),它是求两个整数最大公约数的一种高效方法。对于两个数a和b(假设b非零),如果a能整除b,则GCD(a, b) = b;否则GCD(a, b) = GCD(b, a % b)。
```cpp
int gcd(int num, int den) {
if (den == 0)
return num;
else
return gcd(den, num % den);
}
```
3. **化简分数**:用原始分母除以最大公约数得到新的分母,分子也同样除以最大公约数。然后返回化简后的分数,即分子 / 新分母的形式。
```cpp
std::pair<int, int> simplifyFraction(int numerator, int denominator) {
int gcdVal = gcd(numerator, denominator);
return {numerator / gcdVal, denominator / gcdVal};
}
```
4. **结果表示**:最后,你可以选择以字符串或其他合适的方式返回简化后的分数,例如 `std::to_string` 或者手动创建一个类似 "numerator over denominator" 的字符串。
```cpp
std::string fractionToString(const std::pair<int, int>& simplifiedFraction) {
return to_string(simplifiedFraction.first) + "/" + to_string(simplifiedFraction.second);
}
```
阅读全文