首先,非常感谢您为我提供了该程序。我是C ++的新手,我真的可以使用一些帮助。该程序设计为取两个分数(在本示例中,使用1/2和1/4),然后对两个分数进行加,减,乘和除。到目前为止,我只涉及到加法部分,但我已经感到困惑。加法的输出为0/0,而不是3/4。我不确定为什么会这样,我需要一些帮助。另外,我会尝试使用并习惯使用结构,因此,如果您在不使用结构的情况下发现问题的解决方案,请不要提交答案。
请帮助我纠正所有错误!
#include <cstdlib>
#include <iostream>
#include <math.h>
/*
Name: Fraction
Author:
Date: 13/10/14 17:33
Description: Takes two fractions and outputs them in different ways
*/
using namespace std;
struct frac {
int A, B, C, D;
};
frac new_frac () ;
frac addition_frac () ;
frac subtraction_frac () ;
frac multiply_frac () ;
frac divide_frac () ;
void printAdd (frac add) ;
int main(int argc, char *argv[])
{
frac fraction;
frac add;
new_frac () ;
addition_frac();
cout << "Addition = " ;
printAdd (add) ;
system("PAUSE");
return EXIT_SUCCESS;
}
// A function that asks the user for a fraction (Ex: 1/2 and 1/4)
frac new_frac () {
frac fraction;
int Aa;
int Ab;
int Ba;
int Bb;
cout << "Enter first numerator " ;
cin >> Aa;
cout << "Enter first denominator " ;
cin >> Ab;
cout << "Enter second numerator " ;
cin >> Ba;
cout << "Enter second denominator " ;
cin >> Bb;
fraction.A = Aa;
fraction.B = Ab;
fraction.C = Ba;
fraction.D = Bb;
cout << "Fraction 1 = " << fraction.A << "/" << fraction.B ;
cout << endl;
cout << "Fraction 2 = " << fraction.C << "/" << fraction.D ;
cout << endl;
return fraction;
}
// A function to add the fractions
frac addition_frac () {
frac add ;
frac fraction ;
add.A = (fraction.A * fraction.B) + (fraction.C * fraction.D) ;
add.B = fraction.A * fraction.D ;
return add;
}
void printAdd (frac add) {
frac fraction;
cout << add.A << "/" << add.B << endl ;
}
最佳答案
首先,您刚刚在全局中声明了类型(struct frac),而在本地(在main中)定义了变量。这意味着,如果您希望该函数更改变量,则必须通过引用将这些变量传递给另一个函数(例如,在这种情况下,您希望函数将值填充到变量中)。
frac fraction;
frac add;
new_frac (frac& fraction, frac& add) ; //assuming frac is typedefed.
addition_frac (frac& fraction, frac& add);
关于c++ - 分数程序-退货等问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26352056/