0

私はこのコードを書いて、負の数、最小数、最大数、数の平均、数の合計を見つけたいと思っています

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.";
 }
}
4

1 に答える 1

2

すべての数値が得られるまで平均を計算しないでください。または、移動平均を維持したい場合は、これまでの合計で割る必要があります。だから行の代わりに

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.";

2 つの明らかなバグがあります。まず、「num」が正かどうかを確認します。これは、「すべての数字」ではなく、最後に入力された数字です。また、非常に負の数が 1 つある場合、合計は負になります。代わりに、負の数のカウントを使用します。

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.

それが機能しているように私には見えます。それはあなたのために働きますか?

于 2013-04-25T01:06:35.407 に答える