Iam은 두 분수를 더하고 결과에 따라 가장 낮은 형태 또는 혼합 된 형태로 결과 분수를 얻는 방법을 찾으려고 노력하지만 문제는 동일한 분모로 두 분수를 입력 할 때 문제가되는 것입니다. 다른 망쳐 놨어요 모든 그래서 그들은 모두 항상 0이다이 분모가 같은 경우 지금까지분수 계산기 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;
}
}
실제 문제를 보여주는 예제 인풋과 아웃풋을 추가해야합니다. "그냥 엉망이 되네"정말 도움이되지 않습니다. – Axel
오 오 죄송합니다. 5/6과 1/10을 입력하면 답은 14/15가 될 것입니다. 그러나 4/5와 3/5를 입력하면 출력은 0/0입니다. 올바른 출력은 1/2이어야합니다. 5 그리고 내가 2/9와 16/18을 입력하면 출력은 1 18/162이고 또한 올바른 출력은 1이어야 함 1/9 –