c++ - 现在我无法让分子输出任何数字。当我这样做时,我得到 0/任何分母。我错过了什么?

标签 c++ function math fractions

//This program evaluates an expression of two fractions added or subtracted
#include <iostream>
#include <cmath>
using namespace std;
int CrossMultiplication(int, char, int);
int DenominatorConversion(int, int);
int main(){
    int NumeratorA;
    int NumeratorB;
    int DenominatorA;
    int DenominatorB;
    char Operation;
    char Slash;
    Slash = '/';
    cout << "This program evaluates an expression of two fractions added or subtracted.\n";
    cout << "The expression should look like this: A/B + C/D  where A, B, C, and D are ";
    cout << "integers, the + sign can be a - sign and spacing is not important.\n";
    cout << "\nEnter the expression: ";
    cin >> NumeratorA >> Slash >> DenominatorA >> Operation >> NumeratorB >> Slash >> DenominatorB;
    cout << NumeratorA  << Slash << DenominatorA << " " << Operation << " " << NumeratorB << Slash << DenominatorB << " " << "=" << " " << CrossMultiplication(NumeratorA,Operation,NumeratorB) << Slash << DenominatorConversion(DenominatorA,DenominatorB);
    cout << "\nThanks for using this program.";
    cin.get();
    cin.get();
    return 0;
}

int CrossMultiplication (int NumeratorA,char Operation, int NumeratorB){
    int NewNumerator;
    int DenominatorA;
    int DenominatorB;
    switch (Operation) {
        case '+': NewNumerator = NumeratorA*DenominatorB + NumeratorB*DenominatorA;
            break;
        case '-':NewNumerator = NumeratorA*DenominatorB - NumeratorB*DenominatorA;
            break;
    return NewNumerator;
    }
}

int DenominatorConversion(int DenominatorA, int DenominatorB){
    int NewDenominator;
    NewDenominator = DenominatorA*DenominatorB;
    return NewDenominator;
}

最佳答案

在函数 Crossmultiplication 中,DenominatorA 和 DenominatorB 的值未正确初始化。尝试将其更改为类似

int CrossMultiplication (int NumeratorA, int DenominatorA, char Operation, int NumeratorB, int Denominator B)

并相应地更改函数调用。

此外,您的 return 语句应该在 switch 构造之外。就像现在一样,它永远不会返回任何东西。或者,您可以完全删除 NewNumerator 变量并像这样编写它:

    switch (Operation) {
        case '+': return NumeratorA*DenominatorB + NumeratorB*DenominatorA;
        case '-': return NumeratorA*DenominatorB - NumeratorB*DenominatorA;
    }

关于c++ - 现在我无法让分子输出任何数字。当我这样做时,我得到 0/任何分母。我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911008/

相关文章:

java - 在 OpenGL 中使用十六进制颜色

c++ - 如何制作 io_service.run();阻塞

c++ - 为什么使用函数而不是对成员的引用?

c# - 是否有关于使用 C# 客户端创建 C++ 聊天服务器的文章或建议?

C++ - 无法从函数返回 vector

函数声明后的 C++ throw() (_NOEXCEPT)

java - AntLR4 : Build A function

math - 如何找到从车辆到目标的方位角/仰角?

python - 结果不正确的异常数学?

c++ - COLLADA:反向绑定(bind)姿势在错误的空间?