[英]Math logic incorrect in function?
我正在做这个练习,它已经很完整了,但是在计算老年人折扣时,数学一定是错误的。 我使用的软件运行这两个输入来检查问题。
20 10 n 2 12(运行良好)
20 10 y 2 12(没有给我预期的结果)
这让我相信问题出在双重确定MembershipCost 函数中的老年人折扣部分。
预期结果是“会员费用 = 162.80 美元”但我的代码给了我“会员费用 = 152.00 美元”
我不确定这里有什么问题。 我希望第二组眼睛可以帮助找到它。 先感谢您。
这是代码:
// headers
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
// prototypes
void displayGeneralInformation ();
void readNecessaryInformation (double& regularCostPerMonth,
double& costPerPersonalTrainingSession,
bool& seniorCitizen, int& numberOfSessions,
int& numberOfMonths);
double determineMembershipCost (double regularCostPerMonth,
double costPerPersonalTrainingSession,
bool seniorCitizen, int numberOfSessions,
int numberOfMonths);
// main
int main()
{
//variables
double regularCostPerMonth;
double costPerPersonalTrainingSession;
bool seniorCitizen;
int numberOfSessions;
int numberOfMonths;
double cost;
// print menu
// calls
// call displayGeneralInformation
displayGeneralInformation ();
// call readNecessaryInformation
readNecessaryInformation (regularCostPerMonth,
costPerPersonalTrainingSession,
seniorCitizen, numberOfSessions,
numberOfMonths);
// call determineMembershipCost
cost = determineMembershipCost (regularCostPerMonth, costPerPersonalTrainingSession, seniorCitizen, numberOfSessions, numberOfMonths);
// Display cost of membership
cout << "\nThe membership cost = $" << setprecision(2)<< fixed << cost << endl;
return 0;
}
// displayGeneralInformation function definition
void displayGeneralInformation ()
{
cout << "\nWelcome to Stay Healthy and Fit center." << endl;
cout << "This program determines the cost of a new membership." << endl;
cout << "If you are a senior citizen, then the discount is 30% off of the regular membership price." << endl;
cout << "If you buy membership for twelve months and pay today, the discount is 15%." << endl;
cout << "If you buy and pay for 6 or more personal training session today, the discount on each session is 20%." << endl;
}
// readNecessaryInformation function definition
void readNecessaryInformation (double& regularCostPerMonth,
double& costPerPersonalTrainingSession,
bool& seniorCitizen, int& numberOfSessions,
int& numberOfMonths)
{
cout << "\nEnter the cost of a regular membership per month: $";
cin >> regularCostPerMonth;
cout << "Enter the cost of one personal training session: $";
cin >> costPerPersonalTrainingSession;
cout << "Are you a senior citizen (Y,y/N,n): ";
char ch;
cin >> ch;
if (ch == 'Y' || ch == 'y')
seniorCitizen = true;
else
seniorCitizen = false;
cout << "Enter the number of personal training sessions bought: ";
cin >> numberOfSessions;
cout << "Enter the number of months you are paying for: ";
cin >> numberOfMonths;
}
// determineMembershipCost function definition
double determineMembershipCost (double regularCostPerMonth, double costPerPersonalTrainingSession, bool seniorCitizen, int numberOfSessions, int numberOfMonths)
{
double cost = regularCostPerMonth * numberOfMonths;
if (seniorCitizen)
{
cost = cost - (regularCostPerMonth * 0.30 * numberOfMonths);
}
if (numberOfMonths >= 12)
{
cost = cost - (regularCostPerMonth * 0.15 * numberOfMonths);
}
cost = cost + (costPerPersonalTrainingSession * numberOfSessions);
if (numberOfSessions > 5)
{
cost = cost - (costPerPersonalTrainingSession * 0.20 * numberOfSessions);
}
return cost;
}
试试这个:
cost = (cost - (cost * 0.30)); //for 30% off
cost = (cost - (cost * 0.15)); //15% off
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.