将英镑转换为欧元 - 使用参数
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);
}
我已经在 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);
}