乘以十进制的倍数,给我一个小十进制答案,以回馈我的变量



当前使用clion来解决家庭作业问题。我相信我正在正确地使用我的if statements,如双重和char,但似乎并没有给我带来的结果。问题问:

  • 购买一个获得一半促销的一半:较低的价格项目是半价。
  • 如果客户是俱乐部卡成员,则额外折扣10%。
  • 税收。

我试图移动括号。我已经将.90宣布为设置变量,并尝试将其乘以乘以,但仍然总是给我相同的答案。我认为这与我的IF-Statemet有关。

using namespace std;
int main() {
double price1, price2, taxRate, fullSubtotal;
char clubCard;
double basePrice, cardPrice, finalPrice;

    // ...
    cout<<"Enter price of first item: ";
    cin>>price1;
    cout<<"Enter price of second item: ";
    cin>>price2;
    cout<<"Does customer have a club card? (Y/N): ";
    cin>>clubCard;
    cout<<"Enter tax rate, e.g. 5.5 for 5.5% tax: ";
    cin>>taxRate;
    fullSubtotal = price1 + price2;
    taxRate /= 100;
    taxRate += 1;
    if (price1 > price2) {
        price2 /= 2.00;
        basePrice = price1 + price2;
        if (clubCard == 'y' || clubCard == 'Y') {
            cardPrice = basePrice * .90;
           finalPrice = taxRate * cardPrice;
        }
        else (clubCard == 'n' || clubCard == 'N'); {
            cardPrice = basePrice;
            finalPrice = taxRate * cardPrice;
        }
    }
    else {
        price1 /= 2.00;
        basePrice = price1 + price2;
        if ((clubCard == 'y') || (clubCard == 'Y')) {
            cardPrice = basePrice * .90;
            finalPrice = taxRate * cardPrice;
        }
        else ((clubCard == 'n') || (clubCard == 'N')); {
            cardPrice = basePrice;
            finalPrice = taxRate * cardPrice;
        }
    }
    cout<<"Base price: "<<fullSubtotal<<endl;
    cout<<"Price after discounts: "<<cardPrice<<endl;
    cout<<"Total price: "<<finalPrice<<endl;
    return 0;
}

每次我输入每个价格(10和20(的值时,它给了我正确的全尺寸,但是当我寻求该路线的相应cardprice(如果说明(时,它给了我25.(包括税(为27.0625。我期望输出是CardPrice:22.5,带有最终优势:24.35625

您的问题在else节中:

    if(clubCard == 'y' || clubCard == 'Y') {
        cardPrice = basePrice * .90;
        finalPrice = taxRate * cardPrice;
    } else
        (clubCard == 'n' || clubCard == 'N');
    {
        cardPrice = basePrice;
        finalPrice = taxRate * cardPrice;
    }

您尝试为else添加的条件变成语句,并且在覆盖先前设置的值后,{}块中的代码。修复:

    if(clubCard == 'y' || clubCard == 'Y') {
        cardPrice = basePrice * .90;
        finalPrice = taxRate * cardPrice;
    } else if(clubCard == 'n' || clubCard == 'N') {
        cardPrice = basePrice;
        finalPrice = taxRate * cardPrice;
    }

您的错误是在内在子句中。

其他条件没有条件,因此(clubCard == 'n' || clubCard == 'N');是没有用的,但仍然正确的C 。它评估了然后被丢弃的布尔。问题是,由于它没有条件,因此始终执行此后的块。

使用else if并丢弃半隆,或者掉落整个条件和半隆:

...
if (clubCard == 'y' || clubCard == 'Y') {
    cardPrice = basePrice * .90;
   finalPrice = taxRate * cardPrice;
}
else {
    cardPrice = basePrice;
    finalPrice = taxRate * cardPrice;
}
....

最新更新