嗨,我需要一些帮助。我正在编程课程中,我们正在使用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
也需要以某种方式在第三次后停下来并正确退出。如果我放下第二个停顿将无法正常工作,所以我也缺少一些明显的东西!
我看到的第一个问题是您没有初始化几个变量。
您应该同时初始化 minValue
和 maxValue
变量,它们在第一个循环中的每一个情况下都会覆盖的东西(通常是"正面/负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)
{
...
}
...