如何取正输入的平均值,直到给定负输入



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

#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 ;
}
#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;
}

注意,如果用户提供了错误的输入,这将失败。如果您需要它来处理错误的输入,请参阅这里的cin类型。

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

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 ;
}

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

同样重要的是,如果用户的第一个输入是负数,要避免除以零。

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

#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 ;
}

最新更新