有理数加法怎么编程序的

时间:2025-01-25 07:31:43 游戏攻略

编写有理数加法的程序,可以采用以下步骤:

输入处理

读取两个有理数,每个有理数由分子和分母组成,格式为 `a1/b1 a2/b2`。

将输入的字符串解析为分子和分母的整数值。

加法运算

根据有理数加法的法则,确定结果的符号和绝对值。

若两个数同号,则将它们的绝对值相加,并取相同的符号。

若两个数异号,则取绝对值较大的数的符号,并用较大的绝对值减去较小的绝对值。

若其中一个数为0,则结果仍为该数。

结果化简

将结果化为最简分数形式。若分母为1,则只输出分子。

输出结果

按照 `a/b` 的格式输出结果。

```cpp

include

include

include

include // for std::gcd

class Rational {

public:

int numerator;

int denominator;

Rational(int num, int denom) : numerator(num), denominator(denom) {

simplify();

}

void simplify() {

int gcd = std::gcd(numerator, denominator);

numerator /= gcd;

denominator /= gcd;

if (denominator < 0) {

numerator = -numerator;

denominator = -denominator;

}

}

Rational operator+(const Rational& other) const {

int num = numerator * other.denominator + other.numerator * denominator;

int denom = denominator * other.denominator;

return Rational(num, denom);

}

friend std::ostream& operator<<(std::ostream& os, const Rational& r) {

os << r.numerator << "/" << r.denominator;

return os;

}

};

int main() {

std::string input;

std::getline(std::cin, input);

std::istringstream iss(input);

int a1, b1, a2, b2;

char slash;

iss >> a1 >> slash >> b1 >> slash >> a2 >> slash >> b2;

Rational r1(a1, b1);

Rational r2(a2, b2);

Rational sum = r1 + r2;

std::cout << sum << std::endl;

return 0;

}

```

代码解释:

Rational类

包含分子和分母,并提供简化方法。

重载了加法运算符 `+`,以便可以直接使用 `+` 运算符进行加法操作。

main函数

从标准输入读取一行字符串,解析为两个有理数。

创建 `Rational` 对象并计算它们的和。

输出结果。

这个程序可以处理两个有理数的加法,并输出最简分数形式的结果。