- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经为我的家庭作业编写了代码,并且我有所有必要的输入文件(错误和 cateringInput),但是我得到一个黑屏,无法到达我的 cout 消息。我犯了一个菜鸟错误,没有测试就实现了功能,但我真的认为我做对了。
我已尝试解决我的功能问题,但似乎一切都井井有条。我知道这可能是一些愚蠢的错误,但我似乎真的无法解决它:/
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int getInput(ifstream& infile, ofstream& errorfile, int &partyID, int &numAdults, int &numChildren, char &mealType, char &isWeekend, double &deposit);
double calculateCost(int numAdults, int numChildren, char mealType);
void additionalCost(double &cost, double &tip, double &tax, double &surcharge, char isWeekend);
void toatlBill(ofstream& outfile, int partyID, int numAdults, int numChildren, double cost, double tip, double tax, double surcharge, double deposit);
int getInput(ifstream& infile, ofstream& errorfile, int &partyID, int &numAdults, int &numChildren, char &mealType, char &isWeekend, double &deposit)
{
infile >> partyID >> numAdults >> numChildren >> mealType >> isWeekend >> deposit;
int errorFlag = 1;
// Check for errors in input (validation)
if (numAdults < 0)
{
errorfile << "PartyID: " << partyID << endl;
errorfile << "Number of adults cannot be negative" << endl;
errorFlag = 0;
}
if (numChildren < 0)
{
errorfile << "PartyID: " << partyID << endl;
errorfile << "Number of children cannot be negative" << endl;
errorFlag = 0;
}
if (mealType != 'S' && mealType != 'D')
{
errorfile << "PartyID: " << partyID << endl;
errorfile << "Meal type should be either 'S' or 'D' " << endl;
errorFlag = 0;
}
if (isWeekend != 'Y' && isWeekend != 'N')
{
errorfile << "PartyID: " << partyID << endl;
errorfile << "Weekend should be either 'Y' or 'N' " << endl;
errorFlag = 0;
}
if (deposit < 0)
{
errorfile << "PartyID: " << partyID << endl;
errorfile << "Deposit amount cannot be negative" << endl;
errorFlag = 0;
}
return errorFlag;
}
double calculateCost(int numAdults, int numChildren, char mealType)
{
double adultMealCost, childrenMealCost, cost;
if (mealType == 'D')
{
adultMealCost = 25.80;
}
else
{
adultMealCost = 21.75;
}
childrenMealCost = adultMealCost * 0.6; // 60% of adult meal cost
cost = (numAdults * adultMealCost) + (numChildren * childrenMealCost);
return cost;
}
void additionalCost(double &cost, double &tip, double &tax, double &surcharge, char isWeekend)
{
tip = cost * 0.18; // 18%
tax = cost * 0.1; // 10%
double total = cost + tip + tax;
if (isWeekend == 'Y')
{
surcharge = total * 0.07; // 7%
}
else
{
surcharge = 0;
}
}
void toatlBill(ofstream& outfile, int partyID, int numAdults, int numChildren, double cost, double tip, double tax, double surcharge, double deposit)
{
double total = cost + tip + tax + surcharge;
outfile << setprecision(2) << fixed;
outfile << endl << "--------------------------------------" << endl;
outfile << endl << setw(20) << left << "PartyID: " << setw(5) << right << partyID << endl;
outfile << setw(20) << left << "Number of adults: " << setw(5) << right << numAdults << endl;
outfile << setw(20) << left << "Number of children: " << setw(5) << right << numChildren << endl;
outfile << endl << setw(20) << left << "Meal Cost: " << setw(6) << right << "$ " << cost << endl;
if (surcharge > 0)
{
outfile << setw(20) << left << "Surcharge: " << setw(6) << right << "$ " << surcharge << endl;
}
outfile << setw(20) << left << "Tax: " << setw(6) << right << "$ " << tax << endl;
outfile << setw(20) << left << "Tip: " << setw(6) << right << "$ " << tip << endl;
outfile << setw(20) << left << "Total party cost: " << setw(6) << right << "$ " << total << endl;
if (deposit > 0)
{
outfile << setw(20) << left << "Deposit: " << setw(6) << right << "$ " << deposit << endl;
}
outfile << setw(20) << left << "Total Balance due: " << setw(6) << right << "$ " << (total - deposit) << endl;
}
int main()
{
// Open the input file
ifstream infile;
infile.open("cateringInput.txt");
// Open the error file
ofstream errorfile;
errorfile.open("error.txt");
// Open the output file
ofstream outfile;
outfile.open("cateringOutput.txt");
int partyID, numAdults, numChildren;
char mealType, isWeekend;
double deposit, cost, tip, tax, surcharge;
while (!infile.eof()) // End of the file has not been reached yet
{
int errorFlag = getInput(infile, errorfile, partyID, numAdults, numChildren, mealType, isWeekend, deposit);
if (errorFlag) // Flag for errors in the data
{
if (numAdults > 0 || numChildren > 0)
{
cost = calculateCost(numAdults, numChildren, mealType);
additionalCost(cost, tip, tax, surcharge, isWeekend);
toatlBill(outfile, partyID, numAdults, numChildren, cost, tip, tax, surcharge, deposit);
}
}
}
outfile << endl << "--------------------------------------" << endl;
infile.close();
errorfile.close();
outfile.close();
cout << "Finished! Please verify by checking 'cateringOutput.txt'" << endl;
system("pause");
return 0;
}
只需要编译这个,我没有创建输出文件,也没有得到我为确认程序已执行而做的 cout <<
编辑 1:
似乎这部分代码搞砸了:
while (!infile.eof()) // End of the file has not been reached yet
{
int errorFlag = getInput(infile, errorfile, partyID, numAdults, numChildren, mealType, isWeekend, deposit);
if (errorFlag) // Flag for errors in the data
{
if (numAdults > 0 || numChildren > 0)
{
cost = calculateCost(numAdults, numChildren, mealType);
additionalCost(cost, tip, tax, surcharge, isWeekend);
toatlBill(outfile, partyID, numAdults, numChildren, cost, tip, tax, surcharge, deposit);
}
}
}
我在这个 while 循环上面放了一个 COUT,它通过了,但是如果我把 COUT 放在它下面,它就不会通过。虽然我无法弄清楚:/
最佳答案
我给了它一个有效的输入文件,它工作了。然后我给了它一个无效的输入文件并且失败了。也许你只是没有给它一个有效的输入文件:
有效的输入文件内容:
1 1 1 S Y 1
无效的输入文件内容:
1.x 1 1 S Y 1
有效输入文件的输出文件内容:
--------------------------------------
PartyID: 1
Number of adults: 1
Number of children: 1
Meal Cost: $ 34.80
Surcharge: $ 3.12
Tax: $ 3.48
Tip: $ 6.26
Total party cost: $ 47.66
Deposit: $ 1.00
Total Balance due: $ 46.66
--------------------------------------
PartyID: 1
Number of adults: 1
Number of children: 1
Meal Cost: $ 34.80
Surcharge: $ 3.12
Tax: $ 3.48
Tip: $ 6.26
Total party cost: $ 47.66
Deposit: $ 1.00
Total Balance due: $ 46.66
--------------------------------------
我根本没有修改你的源。
关于c++ - 我的代码是完整的,至少我相信它是......为什么它不能按预期运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55944360/
我对java有点陌生,所以如果我犯了一个简单的错误,请原谅我,但我不确定我哪里出错了,我收到的错误是“预期的.class,预期的标识符,而不是声明, ';'预期的。”我尝试了不同的方法,并从这些方法中
This question already has answers here: chai test array equality doesn't work as expected (3个答案) 3年前
我正在学习 Java(对不起,我的英语很差,这不是我的母语),当我在 Eclipse (JavaSE-1.7) 中在我输入的每个“try”中执行“try-finally” block 时,会出现以下消
我收到两个错误,指出 token 上的语法错误,ConstructorHeaderName expected instead & token “(”上的语法错误,< expected 在线: mTM.
我找不到错误。 Eclipse 给我这个错误。每个 { } 都是匹配的。请帮忙。 Multiple markers at this line - Syntax error on token “)”,
代码: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class DoubleIt extends
我正在用 python(Vs 代码)编写代码,但出现此错误: Expected ")" Pylance 错误发生在:def main() 我试着运行我的 main 并将它打印到我的屏幕上。我用谷歌搜
我正在尝试按照 documentation 中的建议使用异步函数。但我收到此错误 意外的 token ,预期 ( async function getMoviesFromApi() { try
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
第一行包含一个表示数组长度的整数p。第二行包含用空格分隔的整数,这些整数描述数组中的每个元素。第三行打印一个整数,指示负数组的数量。 package asgn3; import java.util.*
好的,我是初学者,我必须修复此 java 表达式语言代码才能在我的系统 (Windchill) 中工作,但看起来我在语法中遗漏了一些内容: LWCNormalizedObject lwc =
我无法编译我的程序! 我想我缺少一个花括号,但我怎么也看不出在哪里! import javax.swing.*; import java.awt.*;
我的 jQuery 代码有问题,我的 Firebug 向我发出警告:需要选择器。 这是代码: $("img[id$='_tick']").each(function() { $(this).c
我的新类(class) Fountainofyouth 遇到了问题。尝试构建整个项目后,调试器显示 warning: extended initializer lists only available
我已经从 Java 转向 CPP,并且正在努力围绕构造构造函数链进行思考,我认为这是我的问题的根源。 我的头文件如下: public: GuidedTour(); GuidedTour(string
鉴于以下 for(var i=0; i< data.cats.length; i++) list += buildCategories(data.cats[i]); jsLint 告诉我 Expect
我有这个 json,但 Visual Studio Code 在标题中给了我警告。 [ { "title": "Book A", "imageUrl": "https:
我正在尝试编写一个有条件地禁用四个特殊成员函数(复制构造、移动构造、复制赋值和移动赋值)的包装类,下面是我用于测试目的的快速草稿: enum class special_member : uint8_
所以我用 F# 编写了一个非常简单的程序,它应该对 1000 以下的所有 3 和 5 的倍数求和: [1..999] |> List.filter (fun x -> x % 3 = 0 || x %
我是一名优秀的程序员,十分优秀!