【问题标题】:How to put sentinel in for loop如何将哨兵放入for循环
【发布时间】:2014-09-12 02:26:32
【问题描述】:

我有几个问题需要解决。此程序会找到用户所需数字的平均值。例如,如果他们输入 3,然后输入 1、2、3,则平均值为 2。 首先,如果输入零,我的程序应该停止。所以如果我输入 3 作为将被平均的整数数,然后我输入 1,2,0 它应该停止并且不计算平均值。 另外,我需要考虑负数。

#include <iostream>
using namespace std;
double avgVal(int, int);
int main()
{
    int amountOfCases;
    cin >> amountOfCases;
    int * numbers = new int[amountOfCases];
    int sum = 0;
    while(numbers !=0)
    {
    for (int i = 0; i<amountOfCases; i++)
    {
        cin >> numbers[i];
        sum = sum + numbers[i];
    }


    cout<<avgVal(sum, amountOfCases)<<endl;
    delete[] numbers;
    }
    system("pause");
    return 0;
}

double avgVal(int sum, int amountOfCases)
{
    return sum / (double)amountOfCases;
}

【问题讨论】:

  • 您选择 C# 还是 C++ 了吗?使用这两个标签没有帮助。
  • while (numbers != 0) 是做什么的?

标签: c++ function average sentinel


【解决方案1】:

不确定您在添加 while 循环时的想法。鉴于您要解决的问题,没有必要。

换行:

while(numbers !=0)
{
for (int i = 0; i<amountOfCases; i++)
{
    cin >> numbers[i];
    sum = sum + numbers[i];
}

cout<<avgVal(sum, amountOfCases)<<endl;
delete[] numbers;
}

for (int i = 0; i<amountOfCases; i++)
{
   cin >> numbers[i];
   if ( numbers[i] == 0 )
   {
      exit(1); // Exit with a non-zero status, indicating failure.
   }
   sum = sum + numbers[i];
}

cout<<avgVal(sum, amountOfCases)<<endl;
delete[] numbers;

【讨论】:

    猜你喜欢
    • 2020-04-07
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多