将结构数据传递给变量C++

Passing a struct data to a variable C++?

本文关键字:变量 C++ 结构 数据      更新时间:2023-10-16

首先,我想为我糟糕的英语道歉,并提前感谢您的阅读和帮助。

基本上,我有两个包含3个int的structs:数字fractionAnswers

然后,我有一个名为addSubFractions的类,它将两个数字结构类型作为参数,并返回一个fractionAnswers结构类型。我的目标是将addSubFractions类的返回值分配给数字类型的结构变量,该变量名为答案

我对C++还很陌生,我认为我可以从逻辑上做到这一点,在没有任何好信息的情况下,我尽可能多地在谷歌上搜索。

以下是不适用于我的部分代码:

int main() {
numbers first, second, answer ;
cout << "Enter fraction" ;
cin >> first.wholeNumber ;
cin >> first.numerator   ;
cin >> first.denominator ;
cout << "Enter second fraction" ;
cin >> second.wholeNumber ;
cin >> second.numerator ;
cin >> second.denominator ;

answer = addSubFractions(first, second) ;
cout << "Your answer is:" <<  answer.numerator << "/" << answer.denominator ;
return 0 ;}

这是我谈论的另一门课

    fractionAnswers addSubFractions(numbers firstFraction, numbers secondFraction) {
    numbers answerFraction, holdFraction1, holdFraction2      ;
    fractionAnswers someAnswers               ;
    //Multiply to get same denominator
    holdFraction1.denominator   =   firstFraction.denominator   *   secondFraction.denominator ;
    holdFraction2.denominator   =   firstFraction.denominator   *   secondFraction.denominator ;
    //Numerator multiplication to match new denominator
    holdFraction1.numerator     =   firstFraction.numerator     *   secondFraction.denominator ;
    holdFraction2.numerator     =   secondFraction.numerator    *   firstFraction.denominator  ;

    //Reduce fractions first
    while (true) {
        if(!reduceFractions(holdFraction1))
            break;
    }
    //Reduce fractions second
        while (true) {
            if(!reduceFractions(holdFraction2))
                break;
        }
        someAnswers.numeratorAns     =   holdFraction1.numerator + holdFraction2.numerator ;
        someAnswers.denominatorAns   =   holdFraction2.denominator                  ;
return someAnswers ;
}

这是还原分数

bool reduceFractions(numbers Fractions) {
    bool answer ;
    for (int i = Fractions.numerator ; i >= 2 ; i--) {       //This will keep running until i = the GFC for both numerator & denominator
        if ((((Fractions.numerator % i) == 0) && (Fractions.denominator % i) == 0)) {
            Fractions.numerator     /=   i ;
            Fractions.denominator   /=   i ;
            answer                   =   true ;
        }
    }
    answer   =   false ;
    return answer ;
}

这些是结构

struct numbers {
    int numerator   ;
    int denominator ;
    int wholeNumber ;
};
struct fractionAnswers {
    int numeratorAns   ;
    int denominatorAns ;
    int wholeNumberAns ;
};

这段代码不应该编译,对吗?不能将fractionAnswers类型的值分配给numbers类型的变量,即使它们具有相同的成员布局。一些选项包括:

  • 将返回类型addSubFractions更改为numbers

  • answer = addSubFractions(first, second) ;更改为fractionAnswers temp = addSubFractions(first, second); answer.numerator = temp.numeratorAns; answer.denominator = temp.denominatorAns; answer.wholeNumber = temp.wholeNumberAns;