程序从不打印任何输出

时间:2015-10-08 03:34:59

标签: c++

#include <iostream>
#include <iomanip>
#include <cstdlib>

using namespace std;

void userInput(int& Length, char& AuthorLevel);

int main(void)
{
int Length;         // The length of the story.
int counter = 0;
int numA = 0;
int numB = 0;
int numC = 0;
char AuthorLevel;   // The level of the author.
float PayOut;       // The final payout.
float averagePayout = 0.0;
float highestPayout = 0.0;

} //end main()
//==================================================================
// This part collects the inputs.
void userInput(int& Length, char& AuthorLevel )
{
cout << "Please enter the word count of the story (-1 to stop): ";
cin >> Length;
cout << "Now enter the author's level (A, B, or C): ";
cout << "Level: ";
cin >> AuthorLevel;
cout << endl;

};
//==================================================================
int computePay(int& Length, char& AuthorLevel)
{
    float PayOut;       // The final payout.
    int numA = 0;
    int numB = 0;
    int numC = 0;
    float averagePayout = 0.0;
    float highestPayout = 0.0;
    int counter = 0; // The number of times the program has ran.

    if(Length < 7500)
        {
            PayOut = 0.08 * Length;
        }
    else if(Length < 8000)
        {
            PayOut = 600;
        }
    else if(Length < 17500)
        {
            PayOut = 0.075 * Length;
        }
    else if(Length < 19000)
        {
            PayOut = 1313;
        }
    else
        {
            PayOut = 0.07 * Length;
        };
    if ((AuthorLevel == 'A') || (AuthorLevel == 'a'))
    {
        PayOut = 1.75 * PayOut;
    }
    else if(AuthorLevel == 'B' || AuthorLevel == 'b')
    {
        PayOut = 1.25 * PayOut;
    }
    else if (AuthorLevel == 'C' || AuthorLevel == 'c')
    {
        PayOut = 1.00 * PayOut;
    };
    do
    {
        userInput(Length, AuthorLevel);
        computePay(Length, AuthorLevel);
        counter++;
        cout << "The amount the author will make from the story will be: $"     << PayOut;
        cout << endl << endl;
          averagePayout = (averagePayout + PayOut) /2;
          if(highestPayout < PayOut)
            {
            highestPayout = PayOut;
             }
    }
    while(Length != -1);
};


//list the number of a b c 's
// for this use if statements to check  which was entered and then increment      that counter,
// system out the loop counter
//system out average payout and highest
//===================================================

这保持零输出而不是通过计算或要求输入,我老实说我不知道​​我做错了什么。对于作业,我还必须列出输入的A,B,C和C的数量,记录它循环的次数,计算平均值在每个循环之后支付,并且还表示每个循环之后的最大支付,并且我不太热衷于如何执行任何操作。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您的mouse events不会调用您定义的任何功能。它只包含变量定义。

由于这是C ++,如果你的main()没有明确返回,它将返回一个0,这就是你所看到的。

我也不确定你的main():它似乎没有返回任何int computePay(),即使它应该可能吗?或者你希望它是int

答案 1 :(得分:0)

您的代码中存在多个问题:

1。)您永远不会在main()中调用您的任何功能。所以它所做的只是创建一些变量并结束程序。 尝试添加以下内容:

userInput(Length, AuthorLevel);

computePay(Length, AuthorLevel);

2。)你的职能int computePay(int& Length, char& AuthorLevel)&amp; int main()被声明为返回int,但是你永远不会返回任何内容:这会导致未定义的行为。 只需在函数末尾添加return 0; - 或者将类型更改为float并返回PayOut变量。

3。)您在开始时错过了int computePay(int& Length, char& AuthorLevel);的原型,因此您无法通过主要功能调用它。

4.。)你的comutePay函数将永远不会返回并导致堆栈溢出 - 每次在循环中进行递归调用,这将永远不会结束。 您需要在Length电话

之前查看comutePay变量