我很难找到为什么我的程序在我的上一个输出行输出两次。
如果我尝试5和500的输入它可以工作但是当我尝试使用更大的数字作为第二个输入(如500000)时,我会在最后一个输出行中合并两个不同的输出。
以下是我的代码。 我很确定这是我最后的if else陈述,但我没有看到问题。
任何帮助都会非常感激。
#include <iostream>
using namespace std;
int main()
{
double estimatedSales;
double copyPrice;
double netMade;
double firstOp_net;
double secondOp_net;
double thirdOp_net;
double cashBefore = 5000;
double cashAfter = 20000;
const double FIRST_RATE = .125;
const double SECOND_RATE1 = .10;
const double SECOND_RATE2 = .14;
double bestPrice;
cout << "Enter the price for a copy of your novel\n";
cin >> copyPrice;
cout << "Enter the estimated number of copies that will be sold\n";
cin >> estimatedSales;
netMade = copyPrice * estimatedSales;
cout << "It is estimated that your novel will generate $" << netMade << " of revenue.\n" ;
firstOp_net = cashBefore + cashAfter;
secondOp_net = netMade * FIRST_RATE;
if (estimatedSales <= 4000) {
thirdOp_net = netMade * SECOND_RATE1;
} else {
thirdOp_net = netMade * SECOND_RATE2;
}
cout << "Royalties you keep for Option 1 is $" << firstOp_net <<"\n";
cout << "Royalties you keep for Option 2 is $" << secondOp_net <<"\n";
cout << "Royalties you keep for Option 3 is $" << thirdOp_net <<"\n";
if (firstOp_net > secondOp_net) {
bestPrice = firstOp_net;
} else {
cout<< "Your best bet would be to go with your 2nd Option for $"<< secondOp_net;
}
if (bestPrice > thirdOp_net) {
cout << "Your best bet would be to go with your 1st Option for $"<< firstOp_net;
} else {
cout<< "Your best bet would be to go with your 3rd Option for $"<<thirdOp_net;
}
return 0;
}
这就是我得到的:
Enter the price for a copy of your novel
5
Enter the estimated number of copies that will be sold
500000
It is estimated that your novel will generate $2.5e+06 of revenue.
Royalties you keep for Option 1 is $25000
Royalties you keep for Option 2 is $312500
Royalties you keep for Option 3 is $350000
Your best bet would be to go with your 2nd Option for $312500Your best bet would be to go with your 3rd Option for $350000
这就是我的期望:
Enter the price for a copy of your novel
5
Enter the estimated number of copies that will be sold
500000
It is estimated that your novel will generate $2.5e+06 of revenue.
Royalties you keep for Option 1 is $25000
Royalties you keep for Option 2 is $312500
Royalties you keep for Option 3 is $350000
Your best bet would be to go with your 3rd Option for $350000
答案 0 :(得分:0)
在计算版税时,代码的问题是最后一部分的逻辑。它实际上很简单,你可以减少代码量。
这是我的解决方案:
#include <iostream>
using namespace std;
int main()
{
double estimatedSales;
double copyPrice;
double netMade;
double firstOp_net;
double secondOp_net;
double thirdOp_net;
double cashBefore = 5000;
double cashAfter = 20000;
const double FIRST_RATE = .125;
const double SECOND_RATE1 = .10;
const double SECOND_RATE2 = .14;
double bestPrice;
cout << "Enter the price for a copy of your novel\n";
cin >> copyPrice;
cout << "Enter the estimated number of copies that will be sold\n";
cin >> estimatedSales;
netMade = copyPrice*estimatedSales;
cout << "It is estimated that your novel will generate $" << netMade << " of revenue.\n" ;
firstOp_net = cashBefore+cashAfter;
secondOp_net = netMade*FIRST_RATE;
if (estimatedSales <= 4000)
{ thirdOp_net = netMade*SECOND_RATE1;
}
else { thirdOp_net = netMade*SECOND_RATE2;
}
cout << "Royalties you keep for Option 1 is $" << firstOp_net <<"\n";
cout << "Royalties you keep for Option 2 is $" << secondOp_net <<"\n";
cout << "Royalties you keep for Option 3 is $" << thirdOp_net <<"\n";
double big = firstOp_net;
if(big<secondOp_net)
{
big = secondOp_net;
}
if(big<thirdOp_net)
{
big = thirdOp_net;
}
cout << "Your best bet would be to go with your 1st Option for $"<< big;
return 0;
}