c++ - 分数计划 - 返回等问题

标签 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 ;
 }

最佳答案

首先,您刚刚在全局范围内声明了类型 ( 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/

相关文章:

c++ - Leetcode 1366:堆缓冲区溢出

c++ - 负数组索引

c++ - 派生模板类中基类构造函数的可见性

c++ - C++:从程序,Windows和Linux中测量内存使用情况

c++ - 指针无法在 C++ 函数中维护

c++ - 系统/统计 S_ISDIR(m) 与结构 dirent

c++ - 如何在 char* 中插入变量的值

c++ - 在 C++ 中反转 C 字符串的最快方法是什么?

c++ - “No overloaded function takes 21 arguments”

c++ - 如何从 dll 内部找到 dll 的父 exe?