最后一行输出两个组合输出有问题吗?如果是其他陈述

时间:2017-09-14 04:18:33

标签: c++ if-statement

我很难找到为什么我的程序在我的上一个输出行输出两次。

如果我尝试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

1 个答案:

答案 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;
}