0

嗨,我需要一些帮助。我正在介绍编程课程,我们正在使用 c++。我希望有人可以帮助我完成昨天到期的任务(我知道不要期待奇迹般的反应,但女孩总是可以尝试)。

我有两个我知道的问题。首先是关于最小值。最重要的是试图让它循环满足三倍的要求,但不会输掉我的总数。我不能使用数组或任何我还没有学过的东西,这就是我发布这个的原因。我见过类似的问题和问题,但他们最终得到的答案对于目前课堂上的进步来说太复杂了。所以这里是问题说明:

说明 1) 编写一个程序,找出从键盘输入的一组数字的平均值、最大值和最小值。数据集中值的数量必须在 0 到 20 的范围内,包括 0 到 20。用户将首先输入数据集中值的数量(使用变量 int Number)。给用户 3 次尝试在给定范围内输入数字的次数。如果输入的数字值超出此范围,请写入错误消息但继续。如果用户在 3 次尝试中没有为 Number 输入有效值,则打印一条错误消息并终止程序。

2) 打印时仅将平均值的输出格式化为小数点后 3 位。

3) 作为输入输入的数据集中的值可以是正值、负值或零值。

4)使程序输出可读(见下面的例子)。(注意:您不会像通常要求的那样打印在此程序中输入的输入值。这是因为我们还没有在我们的研究中涵盖这样做所需的“工具”)。

下面将是您的程序执行的输出:(使用这些值来排序数据集 --> 19.0 53.4 704.0 -15.2 0 100.0

The largest number:  704
The smallest number:  -15.2
The average of the 6 numbers entered: 143.533
yourName L4p2XX.cpp
Lab#4 prob 2 XX-XX-12

这是我在解决方案中的糟糕借口:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    double Number = 0, minValue, maxValue, average, total = 0;
    int ct = 0, numCount;
    cout << "How many numbers would you like to enter? ";
    cin >> numCount;

    for(ct = 1; ct <= numCount; ct += 1)
    {    
        cout << "Enter Value from 0 to 20, inclusive: ";
        cin >> Number;

        if(Number > 20|| Number < 0)
            for(int errorCt = 1; errorCt <= 4; errorCt += 1)
            { 
                if(errorCt == 4)
                {  
                    cout << "You have had 3 attempts to enter a valid" <<
                            "number. \nPlease try this program again when you" <<
                            "are able to follow directions.";
                    cout <<"\nLBn\n"<<"L4P2LB.cpp\n"<<"11-05-12\n";
                    return 0;
                }
                cout << Number << "is not within range.\n" << 
                        "Please enter a number from 0 to 20: ";
                cin >> Number;
            } //end for loop

        total += Number;
        if(maxValue <= Number)
            maxValue = Number;
        if(Number <= minValue)
            minValue = Number;
    } //end for loop

    cout << "The smallest number entered was " << minValue << endl;
    cout << "The largest number you entered was " << maxValue << endl;
    average = total/numCount;
    cout << setprecision(3) << fixed << showpoint << "You entered " <<
            numCount << " numbers. The average of these is " << average;

    //Program ID
    cout <<"\n" << "L4P2LB.cpp\n" << "11-05-12\n";
    system ("pause");
    return 0;
} // End main

提前感谢任何可以引导我朝着正确方向前进的人。不寻找任何人来做我的工作,如果没有其他事情或关于做什么的任何建议,我只需要指导。再次感谢。琳达

我也需要在第三次之后暂停并正确退出。如果我把第二次停顿它就行不通,所以我也错过了一些明显的东西!

4

1 回答 1

0

我看到的第一个问题是您没有初始化几个变量。

您应该使用将在第一个循环中的每种情况下minValuemaxValue覆盖的东西(通常是“正/负无穷大”,由 所以我建议通过更换来解决这个问题<limits>Number

    if(maxValue <= Number)
        maxValue = Number;
    if(Number <= minValue)
        minValue = Number;

    if(maxValue <= Number || ct == 1)
        maxValue = Number;
    if(Number <= minValue || ct == 1)
        minValue = Number;

ct == 1在第一次迭代中也是如此。

也就是说,您检查0..20了错误变量的范围条件。您在变量上检查它Number,但您应该检查numCount变量。但是您也没有遵守存储“数字数量”的变量应该是 的要求Number,因此您确实检查了正确的变量,但使用了错误的变量来读取输入。这应该可以解决这个问题(我更改了行中的变量名cin >>...+ 将检查移到了主循环之外):

cout << "How many numbers would you like to enter? ";
cin >> Number;
if(Number > 20|| Number < 0)
{
    for(int errorCt = 1; errorCt <= 4; errorCt += 1)
    ...
        if(errorCt == 4)
        {  
            cout << "You have had 3 attempts to enter a valid" <<
                    "number. \nPlease try this program again when you" <<
                    "are able to follow directions.";
            cout <<"\nLBn\n"<<"L4P2LB.cpp\n"<<"11-05-12\n";
            return 0;
        }
        cout << Number << "is not within range.\n" << 
                "Please enter a number from 0 to 20: ";
        cin >> Number;
    } //end for loop
}

for(ct = 1; ct <= Number; ct += 1)
{    
    ...
}
...
于 2012-11-06T23:22:08.160 回答