- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个程序基本上应该从文件中读取数据,然后根据数据的内容来处理该数据。这是一家模拟餐饮公司,变量是成人人数、 child 人数、用餐类型(豪华或标准)、一天的类型(周末[是或否]、初始押金等,以及附加费、税、总数等在 CalcData 函数中计算,具体取决于数据是什么(即,如果是豪华餐(D 或 S),价格为 25.80 美元,而不是 21.75 美元(对于标准),如果是周末 ( Y 或 N),附加费加到总账单上,并根据总金额给予折扣)。
虽然我认为我在我的函数中过度使用了引用,但该程序在没有错误检查部分的情况下运行良好(即检查输入是否有效 - 成人/ child /初始存款数量没有负数,没有其他字母比 S/D 和/或 Y/N 等)。我最初使用了一个返回 bool 的“isValid”函数和一个“outputErrorFile”函数,并在 main 中使用 if/else - 如果数据无效,则输出到错误文件,如果它不是无效的,然后将其输出到“帐单”文本文件。从那以后,我将两者结合在一个“checkValid”函数中。我认为做同样的事情,所以没有必要有两个单独的功能。
现在它正在将所有内容输出到错误文件(具体来说,bool 变量“valid”在我的所有数据中始终为 false)。我确定我在那里做了一些愚蠢的事情。我真的不关心输出到控制台的内容,只关心输出到文本文件的内容...感谢您的关注。
谢谢。
输入文件(成人、 child 、豪华或标准餐、周末(是/否)、初始押金):
10 0 S Y 100.00
27 3 D Y 57.50
125 17 DN 0.00
4 0 S N 25.00
0 25 S Y 23.75
250 43 DN 500.00
0 0 D N 0.0
10 0 是 10.00
17 3 D R 15.00
5 0 日 275.00
-3 10 日 20.00
14 -1 S N 30.00
20 3 D Y -10.00
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
void getData(int &, int &, char &, char &, float &);
void checkValid(int &, int &, char &, char &, float &, bool &);
void calcData(int, int, char, char, float, float &, float &, float &, float &);
void sendData(int, int, char, char, float, float &, float &, float &, float &);
ifstream inFile;
ofstream outFile("Billing_Statement.txt");
ofstream error_Report("Error_Report.txt");
//Declare the tax rate and weekend surcharge as constants.
const float taxRate = 0.18;
const float weekendSurcharge = .07;
int main()
{
bool valid = true;
float mealCost;
float totalTax;
float totalSurcharge;
float discountAmount;
int numAdults;
int numChildren;
char mealType;
char dayType;
float depositAmount;
cout << "\nThis program will calculate data for a catering company " << endl;
outFile << " Adults " << "Children " << "Meal " << " Weekend " << setw(9) << "Deposit "
<< setw(6) << "Tax" << setw(11) << "Surcharge" << setw(10) << "Discount" << setw(12) <<
"Meal Cost" << endl;
error_Report << " Adults " << "Children " << "Meal " << " Weekend " << setw(9) <<
"Deposit " << endl;
inFile.open("file.txt");
if (!inFile) {
cout << "nError: File could not be opened. ";
exit(1);
}
while (!inFile.eof()) {
getData(numAdults, numChildren, mealType, dayType, depositAmount);
checkValid(numAdults, numChildren, mealType, dayType, depositAmount, valid);
if (valid == true)
{
calcData(numAdults, numChildren, mealType, dayType, depositAmount, totalTax,
totalSurcharge, discountAmount, mealCost);
sendData(numAdults, numChildren, mealType, dayType, depositAmount, mealCost,
totalTax, totalSurcharge, discountAmount);
}}
cout << "\nA copy of this has created for your convenience in the file,
\"Billing_Statement.txt \"" << endl;
inFile.close();
outFile.close();
error_Report.close();
return 0;
}
void getData(int &numAdults, int &numChildren, char &mealType, char &dayType, float
&depositAmount)
{
inFile >> numAdults >> numChildren >> mealType >> dayType >> depositAmount;
}
void checkValid(int &numAdults, int &numChildren, char &mealType, char &dayType, float
&depositAmount, bool & valid)
{
if (numAdults < 0 || numChildren < 0)
valid = false;
else if (mealType != 'D' || mealType != 'S')
valid = false;
else if (dayType != 'Y' || dayType != 'N')
valid = false;
else if (depositAmount < 0)
valid = false;
else
valid = true;
if (valid == false) {
error_Report << setw(7) << numAdults << setw(9) << numChildren << setw(6) << mealType <<
setw(9) << dayType << setw(9) << right << depositAmount << setw(8) << endl;
}
}
void calcData(int numAdults, int numChildren, char mealType, char dayType, float
depositAmount, float &totalTax, float &totalSurcharge, float &discountAmount, float
&mealCost)
{
if (mealType == 'S') {
mealCost = ((numAdults * 21.75) + (numChildren * (21.75 * .60)));
totalTax = mealCost * taxRate;
mealCost += taxRate;
if (dayType == 'Y') {
totalSurcharge = mealCost * weekendSurcharge;
mealCost += totalSurcharge;
}}
else {
mealCost = ((numAdults * 25.80) + (numChildren * (25.80 * .60)));
totalTax = mealCost * taxRate;
mealCost += taxRate;
if (dayType == 'Y') {
totalSurcharge = mealCost * weekendSurcharge;
mealCost += totalSurcharge;
}
}
if (mealCost < 100) {
discountAmount = .015 * mealCost;
mealCost -= discountAmount;
}
else if (mealCost >= 100 && mealCost < 400) {
discountAmount = .025 * mealCost;
mealCost -= discountAmount;
}
else if (mealCost >= 400) {
discountAmount = .035 * mealCost;
mealCost -= discountAmount;
}
}
void sendData(int numAdults, int numChildren, char mealType, char dayType, float
depositAmount, float &mealCost, float &totalTax, float &totalSurcharge, float
&discountAmount)
{
outFile << fixed << showpoint << setprecision(2);
outFile << setw(7) << numAdults << setw(9) << numChildren << setw(6) << mealType <<
setw(9) << dayType << setw(9) << right << depositAmount << setw(8) << totalTax <<
setw(10) << totalSurcharge << setw(10) << right << discountAmount << setw(12) << right
<< mealCost << endl;
}
最佳答案
您似乎在检查类型,例如
mealType != 'D' || mealType != 'S'
将始终生成 true
,因此,valid
始终设置为 false
。你可能是说
!(mealType == 'D' || mealType == 'S')
或者用 bool 逻辑重写
mealType != 'D' && mealType != 'S'
顺便说一句,您的程序中还有其他问题。例如,我最讨厌的一点是:使用 file.eof()
控制输入循环总是是错误的!您将处理最后一行两次,或者如果输入格式错误,则以无限循环结束。如果输入成功,您总是需要在之后检查输入是否成功!流不可能提前知道您将尝试阅读什么以及是否会成功。
关于C++:模拟餐饮公司计费程序 - 无法将错误数据输出到错误文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20306541/
今天早上,我收到以下消息“此帐户位于已弃用的计费系统上。请联系支持人员将其移至新系统。”当我在门户中打开订阅 Blade 时。当我尝试提交计费支持票证时,它只是在尝试提出支持计划时挂起,无论如何,这对
我正在尝试按照此 firebase 教程设置系统以在超出配额时禁用计费。 https://www.youtube.com/watch?v=Dk3VvRSrQIY 视频描述中链接的文档建议可以延迟终止开
Azure 中是否有办法根据资源组成员身份获取 2 个(或更多)在同一订阅下创建的资源消耗的单独发票?示例: 资源组 A - 包含 Sql 数据库 - 1 张发票 资源组 B - 具有应用服务 - 第
美好的一天。 我是 Azure 云新手,正在尝试了解不同的服务。 我们有 FileShare 存储帐户,该帐户安装在创建的 VM 上。存储帐户是否会默认启用 Azure Defender?我问这个问题
美好的一天。 我是 Azure 云新手,正在尝试了解不同的服务。 我们有 FileShare 存储帐户,该帐户安装在创建的 VM 上。存储帐户是否会默认启用 Azure Defender?我问这个问题
我正在尝试购买测试项目 ID“android.test.purchased”,以检查我的账单集成。但是出现如下错误: com.android.vending.api.ApiException: Err
我有一个带有应用内结算功能的安卓应用。我想要订阅。我看到一个谷歌示例。我在我的申请中介绍了计费。我购买一件商品。但我有问题。我单击按钮“购买”开始 Intent ...。关闭此 Intent 后(文本
默认情况下有多少个前端池附带 ASEv2? 前端池是否包含在 ASEv2 固定月费中?是否根据 worker 的数量和级别(I1、I2、I、3)收费?即 1x I1 前端 + 1x I1 工作人员 =
我们最近开始了新的 Azure DevOps 环境之旅。我确实需要 Microsoft 托管代理和即用即付并行作业的详细计费文档。Microsoft 托管代理相对于自托管代理有哪些优势以及这一切的成本
我们最近开始了新的 Azure DevOps 环境之旅。我确实需要 Microsoft 托管代理和即用即付并行作业的详细计费文档。Microsoft 托管代理相对于自托管代理有哪些优势以及这一切的成本
我正在制作一个应用程序,它可以存储用户使用我的应用程序学习了多少分钟。我的 Firestore 数据库以“用户”集合开头,每个用户都有自己的文档,该文档由 Auth 中生成的用户 ID 命名。 我的问
我需要与 Windows Azure 服务总线主题计费相关的详细信息。例如。 我需要为我的应用程序发布的内容或我的应用程序接收的内容付费吗? 例如。假设我有 1 个出版商和 5 个主题。每个主题每秒有
我正在使用 Azure 发票 API,它要求提供以下参数 https://management.azure.com/providers/Microsoft.Billing/billingAccount
在 Azure 的付款估算器上,我可以选择希望应用服务处于事件状态/付费的小时数。由于在办公时间之外或周末不需要我的应用程序,因此我可以减少工作时间,因此与支付 24/7 相比,成本估算会大大减少。因
我正在尝试对 SQL Azure 的计费术语进行一些澄清...我们目前有一个内部 SQL Server (2008),我们可以从中运行多个数据库。 SQL Azure 计费文档根据数据库大小列出了价格
知道 Azure 计费 API 是否依赖于部署模型(RM 或经典?)。这 Azure documentation没有提及任何具体内容。 最佳答案 两者都不是。部署模型与您配置的 Azure资源相关。计
我想在 Azure DevOps 组织超过一定阈值后删除其计费,以免他们被多收费。所以我有两个问题。首先,是否可以通过 Azure 门户上的成本管理/计费来确定特定 Azure DevOps 组织的预
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: This version of the application is not configured for
我正在尝试在我的一个应用程序中将诺基亚集成到应用程序购买中。我能够在诺基亚 X 模拟器上运行它。但是当我尝试在诺基亚 X 设备上执行相同的代码时,我遇到了以下问题。 我尝试为诺基亚商店应用清除数据,但
我正在开发一个 android 项目,我正在尝试实现 In App Billing V3。 我已将我的应用上传到 Google Play,并向该应用添加 IAP。我可以成功检索我的应用程序具有的 IA
我是一名优秀的程序员,十分优秀!