所以我发布代码一段时间后代码运行正常。代码对两个分数执行加法,减法和乘法,然后找出第一个分数是否小于第二个分数,最后在第二个分数上计算分数的小数形式。但我需要抛出一个异常,如果分母为0,构造函数将停止并抛出“无效输入”消息,然后继续下一组输入。
输入
2
2 0 4 5
1 2 3 4
预期输出
Invalid input
5/4 -1/4 3/8 1/24 True
.50 .75
我原以为我可以在int main中执行所有需要的操作,如果构造函数抛出错误,则打印出“Invalid Input”,否则打印出操作。我只是不确定如何使用类,我正在考虑使用“Catch and throw方法”,但我不确定如何从构造函数输出标志。
构造
Rational(int n, int d)
{
num = n;
denom = d;
if (denom == 0) {
throw overflow_error("Divide by Zero");
}
normalize();
}
主要
int main()
{
int case_count, a, b, c, d;
cin >> case_count;
for (int i = 0; i < case_count; ++i) {
cout << "Case " << i << "\n";
cin >> a;
cin >> b;
cin >> c;
cin >> d;
Rational frac1(a, b);
Rational frac2(c,d);
Rational frac1(a, b);
Rational frac2(c, d);
Rational add;
Rational sub;
Rational mult;
Rational div;
try {
add = frac1 + frac2;
sub = frac1 - frac2;
mult = frac1 * frac2;
div = frac1 / frac2;
cout << add << " ";
cout << sub << " ";
cout << mult << " ";
cout << div << " ";
cout << (frac1 < frac2) << "\n";
cout << frac1.toDecimal() << " ";
cout << frac2.toDecimal() << "\n";
}
catch (overflow_error e) {
cout << e.what();
}
}
return 0;
}
如果最坏的情况发生,我将只进行int主检查以查看它们中的任何一个是否为0并打印出无效输入。但是它要求构造函数将异常抛出到0分母。
我不确定完整的代码是否需要它有点冗长,但如果你想在这里查看它是一个链接:
Overloading Operator Rational Error
如果需要,我可以发布。真的,我只是在寻找一些伪代码或者如何做到这一点的想法。