所以我在打印所有内容的顺序时遇到问题。 应该是“您有优惠券吗?” 然后,“是成人票还是儿童票的折扣?” 然后根据答案输入错误代码或进入收据。 仅当用户在“您有折扣券吗?”中回答“是”时,折扣才弹出。 部分。 但是我不能使其与if和else语句一起使用。

起初,我尝试将所有的if和else语句放在一起,但是打印顺序不正确。 因此,现在我尝试在中间插入收据,但这使if语句的操作混乱,并且收据显示不正确。 无论我输入C还是A(稍后都会声明这两个字符,并且不应该提示打印错误消息),都会打印错误消息。 折扣仍然适用,但错误消息不应打印。

cout<< "\nDo you have a discount coupon (Y for yes)? ";                             
cin>> haveDiscount;

if (haveDiscount == "Y")
{
    cout<< "\nIs the discount for an adult or child's ticket (A for adult, C for child)? ";
    cin>> discountType;
}
if (haveDiscount == "N")
{
    cout<< endl;
}
else
{
    cout<< "\nError: ";
    cout<< discountType;
    cout<<" is not a valid discount type. No discount will be applied.";
}

cout<< "\n\n************************************" << endl;
cout<< right << setw(22) << "Theater Sale";
cout<< "\n************************************";                                            
cout<< "\n\nNumber of adult tickets: " << setw(11) << adultTickets;                         
cout<< "\nNumber of child tickets: " << setw(11) << childTickets << endl;

if (discountType == "A")
{
    coupon = 11.25;
    cout<< "\nDiscount: " << setw(26) << coupon << endl;
}
else
{
    if (discountType == "C")
    {
        coupon = 4.50;
        cout<< "\nDiscount: " << setw(26) << coupon << endl;
    }
}

total = (adultPrice * adultTickets) + (childPrice * childTickets) - coupon;
cout<< "\nTotal purchase: " << setw(20) << total;

我需要输入C或A(为折扣而声明)时不打印错误消息,并且仅在任何其他情况下才打印。

#1楼 票数:0

如果您缩进代码,则阅读起来会容易得多。 看来您缺少了一些假设。 现在看起来像这样:

if (haveDiscount == "Y") 
{
   // ask next question
}
if (haveDiscount == "N") 
{
   // print new line
} 
else 
{
   // print error
}

这意味着无论他们有什么折扣,都将打印错误。 如果haveDiscount不等于“ N”,则会显示错误-如果他们对第一个问题回答“ Y”,则该错误将始终为true。 您可能想要更多这样的东西:

if (haveDiscount == "Y") 
{
   // ask next question
   if (discountType == "C" || discountType == "A")
   {
      // do something
   }
   else 
   {
      // print error
   }
}
else 
{
   // print new line
} 

#2楼 票数:0

discountType不是C或A时打印错误可能看起来像

if (discountType == "A") 
{
    coupon = 11.25; cout<< "\nDiscount: " << setw(26) << coupon << endl; 
}
else if (discountType == "C")
{
    coupon = 4.50; cout<< "\nDiscount: " << setw(26) << coupon << endl;
}
else
{
    cout<< "\nError: ";
    cout<< discountType;
    cout<<" is not a valid discount type. No discount will be applied."; }
}

如果您想在收据前打印错误,则可以这样做

if (discountType != "C" || discountType != "A")
{
    // Error message
}

某处后discountType已设置。

  ask by tomka translate from so

未解决问题?本站智能推荐:

1回复

在if语句中输出Command Shell

我已经搜索了很多并且阅读了很多代码,但是我不明白为什么不能打印该变量(cmd输出)以确保它的问题可能是重复的,但是我无法对下面看到的任何代码发表评论50信誉是我正在尝试的代码,我正在尝试获取cmd的输出并在IF语句中使用它,例如,如果给出错误,则重新发送命令 编辑的照片
4回复

if 语句中的赋值 - 输出如何正确?

代码 如果图像不可见。 这是代码片段,教授给出的输出为 4。 输出如何正确? 是否有可能在'if-else'语句中分配n=4,因为赋值运算符是正确的,但是“if”条件不起作用,因为语法错误,输出将直接给出为4。
2回复

如何修复IF / ELSE语句中重复cout的输出

我有一个完整的代码供我上课; 它根据用户要求的字符数创建一个随机字符串,然后允许用户指定是否要在字符串中查找特定字符对。 最后一部分基于if / else语句,该语句要么给出位置,要么告诉它们字符串中没有对。 我的问题是,当给出一对要查找时,如果它在字符串中给出了更正的语句,那么它也会
1回复

我如何在更新语句中获得输出子句的结果

我使用ado在c ++中进行即时编程,tsql上的documnet表示OUTPUT子句可以将结果返回给调用程序,是否无论如何我可以在c ++中使用ado检索它? 如果有可能怎么做?
1回复

给定条件,如何从输出语句中删除值? - C++

我对如何解决这个问题有点困惑。 我有一些带有一些信息的数组变量,我想在一些计算后将它们打印出来。 如果值为 0,那么我想打印一个“”。 但是,有 3 个数组需要检查,我将如何更改输出语句以适应所有 3 个检查并打印一个空字符串而不是值? 示例输出如下所示: 例如,如果速度总和为 0,则表示速
1回复

从类模块检索信息以在switch语句中输出的问题

我知道这对某些有经验的人来说可能是显而易见的,但是我正处于第一个真正的C ++编程课堂中。 我在代码中遇到了一些尝试解决的问题,但均未成功。 我试图提取存储在这些类模块内部的数组中的“ m_cost”总值的总和。 我想将总值输出到switch语句中以进行打印。 只是看看有人能指出我正确的
9回复

for循环可以在其语句中赋值吗?

我发现了这种语法 当getline(is, st, ' ')覆盖了v.push_back(st)如何作为增量工作?
1回复

嵌套在 switch 语句中的 if-else 语句总是输出 else 语句

我正处于用 C++ 创建井字游戏的开始阶段,为了将“棋子”放在棋盘上,我使用了 switch 语句。 在 switch 内部,有 if-else 语句来检查请求的空间是否被占用。 但是,每当我输入一个点时,它都会执行 if 语句(放置棋子),然后也执行 else 语句(说“再试一次”并让玩家重复他们