分数计算器c++
Fraction calculator c++
我正试图找出一种方法,将两个分数相加,并根据输出获得最低形式或混合形式的结果分数,但问题是,当我输入两个分母相同的分数时,它只会把其他一切都搞砸这是我到目前为止的代码
#include<cmath>
#include<iostream>
using namespace std;
void reduce_fraction(int &numerator, int &denominator);
void addFractions(int numerator1Par, int denominator1Par, int numerator2Par, int denominator2Par);
int main(){
int numerator1 = 0;
int denominator1 = 0;
int numerator2 = 0;
int denominator2 = 0;
int unfactoredNumerator = 0;
int resultDenominator = 0;
int mixedNumberRemainder = 0;
int mixedNumberWhole = 0;
int reducedNumerator = 0;
int reducedDenominator = 0;
int result;
int greatCommonDenominator;
cout << "Enter first numerator: ";
cin >> numerator1;
cout << "Enter first denominator: ";
cin >> denominator1;
cout << endl;
cout << "Enter second numerator: ";
cin >> numerator2;
cout << "Enter second denominator: ";
cin >> denominator2;
cout << endl;
if (denominator1 == denominator2)
{
result = numerator1 + numerator2;
if (unfactoredNumerator>resultDenominator){
int a = unfactoredNumerator / resultDenominator;
int b = unfactoredNumerator - (a*resultDenominator);
cout << numerator1 << "/" << denominator1 << " + " << numerator2 << "/" << denominator2 << " = " << a << " " << b << "/" << resultDenominator << endl;
}
else
{
if (unfactoredNumerator == 0 && resultDenominator == 0)
greatCommonDenominator = 1;
else if (resultDenominator == 0)
greatCommonDenominator = unfactoredNumerator;
else if (unfactoredNumerator != 0) {
int a = unfactoredNumerator, b = resultDenominator;
while (a != b)
if (a < b)
b -= a;
else
a -= b;
greatCommonDenominator = b;
}
cout << numerator1 << "/" << denominator1 << " + " << numerator2 << "/" << denominator2 << " = " << (unfactoredNumerator / greatCommonDenominator) << "/" << (resultDenominator / greatCommonDenominator) << endl;
}
}
else
{
addFractions(numerator1, denominator1, numerator2, denominator2);
}
system("pause>nul");
return 0;
}
void reduce_fraction(int &numerator, int &denominator)
{
for (int i = denominator * numerator; i > 1; i--) {
if ((denominator % i == 0) && (numerator % i == 0))
{
denominator /= i;
numerator /= i;
}
}
}
void addFractions(int numerator1Par, int denominator1Par, int numerator2Par, int denominator2Par) {
int unfactoredNumerator;
int resultDenominator;
int greatCommonDenominator;
unfactoredNumerator = numerator1Par * denominator2Par + numerator2Par * denominator1Par;
resultDenominator = denominator1Par * denominator2Par;
if (unfactoredNumerator>resultDenominator){
int a = unfactoredNumerator / resultDenominator;
int b = unfactoredNumerator - (a*resultDenominator);
cout << numerator1Par << "/" << denominator1Par << " + " << numerator2Par << "/" << denominator2Par << " = " << a << " " << b << "/" << resultDenominator << endl;
}
else
{
if (unfactoredNumerator == 0 && resultDenominator == 0)
greatCommonDenominator = 1;
else if (resultDenominator == 0)
greatCommonDenominator = unfactoredNumerator;
else if (unfactoredNumerator != 0) {
int a = unfactoredNumerator, b = resultDenominator;
while (a != b)
if (a < b)
b -= a;
else
a -= b;
greatCommonDenominator = b;
}
cout << numerator1Par << "/" << denominator1Par << " + " << numerator2Par << "/" << denominator2Par << " = " << (unfactoredNumerator / greatCommonDenominator) << "/" << (resultDenominator / greatCommonDenominator) << endl;
}
}
当分母相同时,您不会初始化unfactoredNumerator和resultDenominatoresultDenominator之前,您不会检查它是否为零。(您应该检查分子和分母的传入值是否为零,并相应地处理这些情况。)
相关文章:
- 使用 BMI 计算器对C++中的数字进行四舍五入的问题
- 我在c ++矩阵计算器程序中找不到错误
- C++计算器,不能单独除以 0
- 如何正确解析子字符串,以便它们对我的新手计算器有效?
- Arduino 基础 2 计算器无法C++工作
- 需要有关我的平均计算器代码的建议
- C++ - 在我尝试制作一个简单的计算器时有一个"uninitialized local variable y used"警告
- 野牛/flex:计算器将双精度值解释为整数,所以我添加了 YYSTYPE 双精度 #define 但我有多个编译错误
- C++计算器运算符
- 使用WIN32 API的击球平均计算器
- RPN计算器c++错误处理和多个运算符
- C++查找用于构建单行计算器
- 如何修复这个基本计算器
- 用于加法和减法的十六进制计算器
- 桌面计算器出现问题.C++程序设计语言
- 如何对堆栈中的所有项目求和?Postfix计算器
- RPN计算器使用头文件进行计算操作和堆栈;用于堆栈的矢量
- 如何在我的基本计算器中循环遍历数组
- 如果 GPA 计算器的语句问题
- 我的C++计算器似乎出了什么问题?