QUANTITY DISCOUNT
10-19 20%
20-49 30%
50-99 40%
100 or more 50%
编写一个程序,询问销售的单位数量并计算购买的总成本。 输入验证:确保单位数大于0“
这是我到目前为止所做的:
#include <iostream>
#include <string> //String class- a string of text
#include <iomanip> //Required for setw= the field width of the value after it
using namespace std;
int main()
{
double sales, charges, numOfUnits = 0,
rateA = .20, rateB = .30, rateC = .40, rateD = .50;
//Set the numeric output formatting:
cout << fixed << showpoint << setprecision(2);
cout << "Enter the quantity for your order: ";
cin >> sales;
// Determine the discount:
double PRICE=99.0;
if (sales >= numOfUnits)
if (sales >= 10 && sales <= 19 )
rateA;
charges = PRICE - rateA *sales;
if (sales >= 20 && sales <= 49)
rateB;
charges = PRICE - rateB *sales;
if (sales >= 50 && sales <= 99)
rateC;
charges = PRICE - rateC *sales;
if (sales > 100 )
rateD;
charges = PRICE - rateD *sales;
cout << "Your total price for this quantity is: $" <<charges
<< " per unit."<< endl;
cout << "That is an invalid number. Run the program again\n "
<< "and enter a number greater than\n"
<< numOfUnits << ".\n";
}
编译后,输出不能给我正确的答案。也许我的数学错了,或者我的流程已关闭?有什么建议吗?
我不希望任何人为我写这个,但也许给我一些指示
答案 0 :(得分:4)
您需要在多线条件下使用大括号{}
if (sales >= 10 && sales <= 19 )
rateA;
charges = PRICE - rateA *sales;
实际上是
if (sales >= 10 && sales <= 19 )
rateA;
charges = PRICE - rateA *sales;
即。 <{1}}是有条件执行的,并且始终会执行rateA
的更新。
此外,像charges
这样的陈述没有任何效果,因此应该更新或删除。
答案 1 :(得分:0)
这种结构:
if (sales >= 50 && sales <= 99)
rateC;
charges = PRICE - rateC *sales;
确实
if (sales >= 50 && sales <= 99)
rateC;
charges = PRICE - rateC *sales;
换句话说,charges
始终使用rateC
计算,而不是仅在销售额处于相关范围内时计算。 if语句中的rateC
也是完全没用的 - 它没有&#34;做&#34;任何有rateC
的东西,它只是告诉编译器去看看这个值,然后把它扔掉&#34; [编译器可能转换为&#34;什么都不做&#34;,因为&#34;寻找&#34;在rateC
,在该声明之外实际上没有任何可见效果,因此可以将其删除]。
答案 2 :(得分:0)
快速浏览一下,我认为数学有点偏差。
应该是:
double originalPrice = PRICE * sales;
if (sales >= 10 && sales <= 19 )
charges = originalPrice - (rateA * originalPrice);
else if (sales >= 20 && sales <= 49)
依旧......