簡體   English   中英

這個應該獲得最大和平均輸入數字的代碼沒有給我想要的 output,我做錯了什么?

[英]This code that is supposed to get the largest and average of input numbers is not giving me the desired output, what did I get wrong?

當我輸入“15 20 0 3 -1”時,我一直試圖讓這個代碼給我一個“20 9.50”的output,但它一直給我output“20 0.55”。 這是我制作的代碼:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {

   int largest = 0;
   int number = 0;
   int count = 0;
   double avg = 0;
   
   while (number >= 0) {
      cin >> number;
      if (number >= 0) {
         if (number > largest) {
            largest = number;
         }
         avg += number; ++count;
      }
      if (count > 0) {
         avg /= count;
      }
   }
   cout << largest << " " << fixed << setprecision(2) << avg << endl;

   return 0;
}

誰能指出我怎么弄錯了 output? 我在 C++ 的 class 中,但我還是新手。 希望我沒有受到太嚴厲的對待,任何幫助表示贊賞。

我不確定您是否應該“即時”保持平均值。

更好、更不容易出錯的方法是在循環的整個生命周期內保持一個總數。 然后,在while循環之后,您應該通過將total除以count來平均。

僅供參考,對於其他所有人: -1 結束了while循環,並且total & count不應在每個輸入的結尾包含 -1。

下面的代碼給出了 output 為20 9.50 ,輸入為15 20 0 3 -1

#include <iostream>
#include <iomanip>
using namespace std;

int main() {

   int largest = 0;
   int number = 0;
   int count = 0;
   double avg = 0;
   double total = 0;

   while (number >= 0) {
      cin >> number;
      if (number >= 0) {
         if (number > largest) {
            largest = number;
         }
         //avg += number; ++count;
         total += number; ++count;
      }
      //if (count > 0) {
      //   avg /= count;
   }
   
   avg = total / count;
   cout << largest << " " << fixed << setprecision(2) << avg << endl;

   return 0;
}

您將 avg 除以 count 幾次。 但是你必須在循環之后再做一次

#include <iostream>
#include <iomanip>
using namespace std;

int main() {

    int largest = 0;
    int number = 0;
    int count = 0;
    double avg = 0;

    while (number >= 0) {
        cin >> number;
        if (number >= 0) {
            if (number > largest) {
                largest = number;
            }
            avg += number; ++count;
        }
        
    }
    if (count > 0) {
        avg /= count;
    }
    cout << largest << " " << fixed << setprecision(2) << avg << endl;

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM