簡體   English   中英

將struct數據傳遞給變量C ++?

[英]Passing a struct data to a variable C++?

首先,我想為我糟糕的英語道歉,並提前感謝您的閱讀和幫助。

基本上我有兩個結構,持有3個整數:數字fractionAnswers

然后我有一個名為addSubFractions的類,它將兩個數字結構類型作為參數並返回一個fractionAnswers結構類型。 我的目標是將addSubFractions類的返回值分配給名為answers數字類型struct變量。

我對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 ;
}

這是reduceFractions

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) ; to fractionAnswers temp = addSubFractions(first, second); answer.numerator = temp.numeratorAns; answer.denominator = temp.denominatorAns; answer.wholeNumber = temp.wholeNumberAns; fractionAnswers temp = addSubFractions(first, second); answer.numerator = temp.numeratorAns; answer.denominator = temp.denominatorAns; answer.wholeNumber = temp.wholeNumberAns;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM