关于如何正确循环循环并找到最小的价值,需要基本C 的帮助



嗨,我需要一些帮助。我正在编程课程中,我们正在使用C 。我希望有人可以帮助我完成昨天到期的任务(我知道不要期望奇迹回答,但女孩总是可以尝试)。

我有两个我知道的问题。首先是关于最小的值。最大的是试图使其循环满足三次的要求,但我的总数不会输掉。我无法使用数组或尚未学到的任何东西,这就是为什么我发布了此信息。我看到了类似的问题和问题,但最终的答案太复杂了,无法在课堂上进行当前的进展。因此,这是问题说明:

说明1)编写一个程序,以查找平均值,最大值和最小的数字值的最小值。数据集中的值数必须在0到20范围内,包括。用户将首先输入数据集中的值数(使用变量int编号)。让用户3尝试输入给定范围内的数字。如果输入的数字值不在此范围之内,请写入错误消息,但继续。如果用户在3个尝试中未输入数字的有效值,则打印错误消息并终止程序。

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 <<"nLBnn"<<"L4P2LB.cppn"<<"11-05-12n";
                    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.cppn" << "11-05-12n";
    system ("pause");
    return 0;
} // End main

预先感谢您可以朝着正确方向引导我的任何人。不寻找任何人去做我的工作,我只需要在方向上提供帮助,如果什么都没有或任何有关该做什么的建议。再次感谢。lynda

也需要以某种方式在第三次后停下来并正确退出。如果我放下第二个停顿将无法正常工作,所以我也缺少一些明显的东西!

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

您应该同时初始化 minValuemaxValue变量,它们在第一个循环中的每一个情况下都会覆盖的东西(通常是"正面/负infinity",由<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的要求,因此您 did 检查正确的变量,但使用了错误读取输入。这应该解决此问题(我更改了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 <<"nLBnn"<<"L4P2LB.cppn"<<"11-05-12n";
            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)
{    
    ...
}
...

相关内容

  • 没有找到相关文章

最新更新