找出最大值,最小值,正数和负数

Find largest, smallest, positive and negative

本文关键字:最小值 最大值      更新时间:2023-10-16

我写了这段代码,我想让它找到负数的数量,最小的数字,最大的数字,数字的平均值,和数字的总和

它不能工作,你能帮我使用if声明吗?我找不到最小或最大的数(当数是负数时),也找不到所有的数是负数还是正数,或者混合。

#include <iostream>
using namespace std;
void main() {
    float num,
        average,
        sum,
        smallest,
        largest,
        positive,
        negative;
    int count;
    sum = 0;
    count = 1;
    largest = 0;
    smallest = 0;
    negative = 0;
    while (count < 11) {
        cout << "Number #" << count << ": ";
        cin >> num;
        if (num < 0) negative++;
        sum += num;
        average = (sum / 10);
        if (num > largest) largest = num;
        else if (num < smallest) smallest = num;
        count++;
    }
    cout << endl << "The smallest number is " << smallest << endl;
    cout << "The largest number is " << largest << endl;
    cout << "The average of all numbers is " << average << endl;
    cout << "The sum of all numbers is " << sum << endl;
    cout << endl;
    cout << "There are " << negative << " negative numbers." << endl;

    if (num > 0) cout << "All numbers are positive.";
    else if (sum < 0) cout << "All numbers are negative.";
    else if {
        cout << "There is a mixture of numbers.";
    }
}

//------------------------------------编辑

我已经做了一些修改,我几乎是正确的,但我仍然找不到一个方法来找到最小和最大

using namespace std;
void main()
{
float num,
average,
sum,
largest,
smallest,
positive,
negative;
int count;
sum = 0;
count = 1;
negative = 0;
largest= 0;
smallest = 0;
while ( count < 11)
{
  cout << "Number #" << count << ": ";
  cin >> num;
  if ( num < 0 )negative++;
  sum += num;
  if (count != 0 )
  {
     if ( num > largest )
        largest = num;
     else if ( num < smallest )
        smallest = num;
  }
  count++;
} 
average = ( sum / 10 );

cout << endl << "The smallest number is " << smallest << endl;
cout << "The largest number is " << largest << endl;
cout << "The average of all numbers is " << average << endl;
cout << "The sum of all numbers is " << sum << endl;
cout << endl;
cout << "There are " << negative << " negative numbers." << endl;
 if ( negative == 0 )
    cout << "All numbers are positive.";
 else if ( negative == 10 )
    cout << "All numbers are negative.";
 else 
 {
    cout << "There is a mixture of numbers.";
 }
}

你不应该计算平均值,直到你得到所有的数字;或者如果你想要保持一个动态平均值,你需要除以目前的总和。所以不用

这行
average = sum / 10;

在循环的中间,试试

average = sum / count;

在循环内,或者

average = sum / (count - 1);

循环后。当然,因为在循环完成之前,实际上并没有使用的平均值,所以这实际上并不重要——但是这有点草率。

接下来,你的代码
if ( num > 0 )
   cout << "All numbers are positive.";
else if ( sum  < 0 )
   cout << "All numbers are negative.";

有两个明显的错误。首先,你要检查"num"是否为正数——那是最后输入的数字,而不是"所有的数字"。如果有一个非常负的数,这个和就是负的。相反,使用你的负数计数:

if ( negative == 0) // all positive
if ( negative == 10) // all negative

否则,它是一个混合物。我相信你可以用这些指针来修复你的代码。

编辑# 2

我决定在一个完整的程序中实现我上面提到的所有更改,以及我在注释中提到的更改。我最终得到的代码是:

#include <iostream>
using namespace std;
int main()
{
float num,
  average,
  sum=0,
  largest=0,
  smallest=0,
  positive=0,
  negative=0;
int count=1;
negative = 0;
while ( count < 11)
{
  cout << "Number #" << count << ": ";
  cin >> num;
  if ( num < 0 ) negative++;
  sum += num;
  if (count == 1) {
    largest = num;
    smallest = num;
  }
  else {
     if ( num > largest )
        largest = num;
     if ( num < smallest )
        smallest = num;
  }
  count++;
}
average = ( sum / (count - 1) );

cout << endl << "The smallest number is " << smallest << endl;
cout << "The largest number is " << largest << endl;
cout << "The average of all numbers is " << average << endl;
cout << "The sum of all numbers is " << sum << endl;
cout << endl;
cout << "There are " << negative << " negative numbers." << endl;
if ( negative == 0 )
  cout << "All numbers are positive."<<endl;
else if ( negative == 10 )
  cout << "All numbers are negative."<<endl;
else
{
  cout << "There is a mixture of numbers.";
}
}

编译得很好;当我运行它并输入以下输入时:

Number #1: 5
Number #2: 4
Number #3: 3
Number #4: 2
Number #5: 1
Number #6: 0
Number #7: -1
Number #8: -2
Number #9: -3
Number #10: -4

我得到这样的输出:

The smallest number is -4
The largest number is 5
The average of all numbers is 0.5
The sum of all numbers is 5
There are 4 negative numbers.
There is a mixture of numbers.

在我看来它是有效的。它对你有用吗?