如何在循环中放置哨兵

How to put sentinel in for loop

本文关键字:哨兵 循环      更新时间:2023-10-16

我有几个问题需要解决。此程序可查找用户所需数字的平均值。例如,如果他们输入3,然后输入1,2,3,则平均值为2。首先,如果输入0,我的程序应该停止。因此,如果我输入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;
}

不确定添加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;