分数计划 - 返回问题等等

时间:2014-10-14 03:15:16

标签: c++

非常感谢您帮助我完成此计划。我是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 ;
 }

2 个答案:

答案 0 :(得分:1)

首先,你刚刚在全局声明了类型(struct frac),而你在本地定义了变量(在main中)。这意味着如果您希望该函数更改变量(例如,您希望函数将值填入变量),则必须将这些变量传递给另一个引用函数。

frac fraction;
frac add;
new_frac (frac& fraction, frac& add) ;                      //assuming frac is typedefed.
addition_frac (frac& fraction, frac& add);

答案 1 :(得分:1)

您的new_frac()addition_frac()函数都有自己的局部变量。看起来你试图像处理全局变量一样处理它们。

我建议你的结构只包含两个数字(一个分子和一个分母),然后有一个函数用签名frac add_frac(frac frac1, frac frac2)添加它们并从main调用它,如:frac sum = add_frac(first, second) ,然后调用您的函数打印带有结果的分数。你的结构也应该有一个构造函数来构建一个新的分数:frac first(1, 2)

希望这有帮助。