如何在给出负输入之前平均正输入

时间:2015-08-04 23:23:49

标签: c++ loops for-loop while-loop

我如何接受并平均正数?输入负数时,应终止循环并显示平均值(不包括负数)。

#include <iostream> 

using namespace std ;
int main () {
    int x,counter=0,sum;
    float avg;
    while (x>0) {
        if(x<0) {
            sum+=x;
            counter++;
            continue;
        } else if  (x>0) {
            cin>>x;
            sum+=x;
            counter ++;
        }
    }
    avg=(float)sum/counter;
    cout<<avg<<endl;
    return 0 ;
}

3 个答案:

答案 0 :(得分:0)

您的实现会立即将输入添加到您的总和中。

int main () {
int x,counter=0,sum;
float avg;
while (x>0) {
    cin >> x;
    if  (x>0) {
        sum+=x;
        counter ++;
    }
}
avg=(float)sum/counter;
cout<<avg<<endl;
return 0 ;
}

这将允许您在添加到总计之前检查输入。

如果用户的第一个输入为负数,请务必避免除以零。

答案 1 :(得分:0)

#include <iostream>
using namespace std;

int main() {
  int sum = 0, count = 0, input;       // initialize all variables
  while (true) {                       // loop forever (until break is reached below)
    cin >> input;                      // get user input
    if (input < 0) break;              // if it's negative, exit loop
    sum += input;                      // otherwise add it to the running sum
    count++;                           // increase the count by 1
  }
  if (count > 0) cout << (double)sum / count;   // if we have at least one number, display avg
  else cout << "No numbers to average" << endl; // else complain.
  return 0;
}

请注意,如果用户提供错误输入,则会失败。如果您需要它来处理错误输入,请参阅here关于cin类型。

答案 2 :(得分:0)

这是一个改进版本,它检查循环是否存在而没有输入任何正整数以避免被零除错误

#include <iostream>

using namespace std ;

int main () {

    int x;
    float counter=0,sum;
    float avg;

    bool isPositive = true;

    while ( isPositive) {
            cin>>x;
            if(x>0)
            {
                sum+=x;
                counter ++;
            }

            else {
                isPositive = false;
            }
    }

    // if we divide by zero, an error will occur
    if(counter > 0)
    {
        avg=(float)(sum/counter);
        cout<<avg<<endl;
    }
    else cout << "Please enter positive numbers";

    return 0 ;
}