C++ 变量没有在类之间传递?我的for循环结构是否错误?

C++ 变量没有在类之间传递?我的for循环结构是否错误?,c++,for-loop,math,output,C++,For Loop,Math,Output,我需要下面的代码看起来像上面的输出,但是我很难做到这样。出于某种原因,我认为利率变量永远不会被填充,我不知道为什么。同时,我也很难获得奖金来正确计算和显示 #include <iostream> #include <iostream> #include <iomanip> #include "Chap1227.h" using namespace std; //function prototypes double getBonusRate(doub

我需要下面的代码看起来像上面的输出,但是我很难做到这样。出于某种原因,我认为利率变量永远不会被填充,我不知道为什么。同时,我也很难获得奖金来正确计算和显示

    #include <iostream>
#include <iostream>
#include <iomanip>
#include "Chap1227.h"

using namespace std;

//function prototypes
double getBonusRate(double rate);
void columnsDashes();
void endPgm();


int main() {

    double rate = 0.0;

        //filling array
        int salesArray[10][4] = {{2400, 3500, 2000, 2750},
                                 {1500, 7000, 1000, 2225},
                                 {2600, 2450, 2100, 2999},
                                 {2790, 2240, 2500, 2885},
                                 {2100, 2600, 2300, 3000},
                                 {6300, 7000, 8000, 5550},
                                 {3300, 1850, 2950, 2100},
                                 {2700, 5500, 6000, 7200},
                                 {4700, 4800, 4900, 5100},
                                 {2375, 3300, 2550, 1925}};

        getBonusRate(rate);

        columnsDashes();

        //bonus object
        Bonus myBonus;

        myBonus.calcAndDisplay(salesArray, rate);

        endPgm();


    return 0;
}

// ***** getBonusRate function description *****
//
double getBonusRate(double rate)
{
    //display console title to user
    cout << "JM SALES BONUS CALCULATOR\n\n";

    //get bonus rate from user
    cout << "Enter bonus rate in decimal form: ";
    cin >> rate;
    cout << "\n\n";

    return rate;
}

// ***** columnsDashes function description *****
//
void columnsDashes()
{
    //display column headings and dashes to user
    cout << "Number     Sales($)     Bonus($)\n";
    cout << "------     --------     --------\n";



}

// ***** endPgm function description *****
//
void endPgm()
{
    //EOP message
    cout << "\n\nEnd of Program.";
}
#包括
#包括
#包括
#包括“第1227.h章”
使用名称空间std;
//功能原型
双倍收益率(双倍收益率);
void columnsDashes();
void endPgm();
int main(){
倍率=0.0;
//填充阵列
int salesArray[10][4]={{2400,3500,2000,2750},
{1500, 7000, 1000, 2225},
{2600, 2450, 2100, 2999},
{2790, 2240, 2500, 2885},
{2100, 2600, 2300, 3000},
{6300, 7000, 8000, 5550},
{3300, 1850, 2950, 2100},
{2700, 5500, 6000, 7200},
{4700, 4800, 4900, 5100},
{2375, 3300, 2550, 1925}};
getBonusRate(速率);
columnsDashes();
//奖金对象
奖金我的奖金;
myBonus.calcAndDisplay(salesArray,rate);
endPgm();
返回0;
}
//******getBonusRate函数说明*****
//
双倍收益率(双倍收益率)
{
//向用户显示控制台标题
利率;
事实上,“比率”并没有被填充,因为有多个变量叫做“比率”。这就像有很多人叫“鲍勃”…“鲍勃·史密斯”、“鲍勃·琼斯”、“鲍勃·汤普森”

getBonusRate()获取它自己的“rate”副本,因此它是“getBonusRate::rate”,主函数有它自己的“main::rate”副本。编译器看到这个全名,但您的代码只看到短名“rate”

函数getBonusRate()有一个参数类型和一个返回类型。 这是一个进门和一个出门。你通过率,但它不出来

要解决此问题,您需要说:

outRate = getBonusRate(inRate);
inRate被复制到getBonusRate()函数中,该函数完成它的工作,然后返回它,然后您将该值赋给outRate。您可以重用/覆盖变量,因此您也可以这样做:
inRate=getBonusRate(inRate);

这里的问题是通过“按值调用”而不是“按引用调用”来传递“rate”变量。 要使其正常工作,只需将getBonusRate函数重新定义为:

double getBonusRate(double& rate)
{
    //display console title to user
    cout << "JM SALES BONUS CALCULATOR\n\n";

    //get bonus rate from user
    cout << "Enter bonus rate in decimal form: ";
    cin >> rate;
    cout << "\n\n";

    return rate;
}
double getBonusRate(双倍&费率)
{
//向用户显示控制台标题
利率;

看不到按值传递、按引用传递以及如何检索作为函数结果的返回参数。或者您也可以按照shobi的建议执行。他的方法可能更符合行业标准(性能稍快)。我的方法是教科书上的解释(它解释返回类型,并暗示范围的概念)。
double getBonusRate(double& rate)
{
    //display console title to user
    cout << "JM SALES BONUS CALCULATOR\n\n";

    //get bonus rate from user
    cout << "Enter bonus rate in decimal form: ";
    cin >> rate;
    cout << "\n\n";

    return rate;
}