将英镑转换为欧元 - 使用参数

Converting pounds to euros - Using Parameters

我已经在 C++ 中启动了一个项目来练习参数的使用,但我在我的代码中遇到了一个问题,我不太确定为什么我得到了我正在得到的值。

这是我的代码: 当我 运行 它时,我从 displayFinalData 输出的值是 0 而不是我期望的值(应该是任何转换等)。

#include <iostream>

using namespace std;

int main()
{
    int numInEuros = 0;
    char answer = 'Y';

    double sumEuro = 0;
    double priceEuro = 0;
    int number = 0;

    while ((answer == 'Y') || (answer == 'y'))
    {
        void processAPrice();
        processAPrice();

        void calculateSum(double priceInEuros, double& sumInEuros);
        calculateSum(priceEuro, sumEuro);

        cout << "\nDo you wish to continue? (Y/N): ";
        cin >> answer;

        number += 1;
    }

    void displayFinalData(double sumInEuros, int number);
    displayFinalData(sumEuro, number);

    system("pause");
    return 0;
}

void processAPrice()
{
    double pricePounds;
    double priceEuro;

    void getPriceInPounds(double& priceInPounds);
    getPriceInPounds(pricePounds);

    void convertPriceIntoEuros(double priceInPounds, double& priceInEuros);
    convertPriceIntoEuros(pricePounds, priceEuro);

    void showPriceInEuros(double priceInPounds, double priceInEuros);
    showPriceInEuros(pricePounds, priceEuro);
}

void getPriceInPounds(double& priceInPounds)
{
    cout << ("\nEnter price in pounds: \x9C");
    cin >> priceInPounds;
}

void convertPriceIntoEuros(double priceInPounds, double& priceInEuros)
{
    double conversionRate = 0.82;
    priceInEuros = (priceInPounds / conversionRate);
}

void showPriceInEuros(double priceInPounds, double priceInEuros)
{
    cout << ("\nThe Euro value of \x9C") << priceInPounds << " is EUR " << priceInEuros << "\n";
}

void calculateSum(double priceInEuros, double& sumInEuros)
{
    sumInEuros += priceInEuros;
}

void displayFinalData(double sumInEuro, int number)
{
    cout << "\nThe total sum is: EUR " << sumInEuro << "\n";
    cout << "\nThe average is: EUR " << (sumInEuro / number) << "\n\n";
}

猜测你想更新priceEuros变量?问题是它是一个 local 变量。不同函数中的局部变量没有关系,即使它们具有相同的符号名称。

对于要在函数之间共享的变量,您需要将它们设为 全局,即将它们声明在任何函数的范围之外。

您在 processAPrice() 函数中单独声明了 priceEuros 变量,该变量在用户输入以英镑为单位的价格后得到更新,但 main() 中的 priceEuro 变量未被触及,并不断将您的 sumEuro 递增 0。

如果您将 main 中的 priceEuros 变量传递给 processAPrice() 函数,它将起作用

void processAPrice(double& priceInEuros)
{
    double pricePounds;

    void getPriceInPounds(double& priceInPounds);
    getPriceInPounds(pricePounds);

    void convertPriceIntoEuros(double priceInPounds, double&     priceInEuros);
    convertPriceIntoEuros(pricePounds, priceInEuros);

    void showPriceInEuros(double priceInPounds, double priceInEuros);
    showPriceInEuros(pricePounds, priceInEuros);
}