C++:求最大值、最小值、总和和平均值

C ++: Finding the Maximum, Minimum, Sum and Average

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

我目前正在为我的C++类编写一些代码,但我找不到我做错了什么。我的代码不会输出正确的数字值。我的代码应该能够找到任何集合数字数组的最大值、最小值、总和和平均值。

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
    const int ARRAY_SIZE = 12; // number of elements 
    int userVals[ARRAY_SIZE];// Array of input numbers
    int numArray[] ={24, -5, 72, 104, 0, 5, 89, -225, 19, 17, 16, 
    81};//Elements
    int i; // loop index
    int maxVal; // Max Value
    int minVal; // Min Value
    int sumVal; // Sum Value
    int aveVal; // Average Value
    sumVal = 0; //* Sum Value
    for (i = 0; i < ARRAY_SIZE; ++i) {
        sumVal = sumVal + userVals[i];
    }
    cout << " Sum Value: " << sumVal << endl;
    maxVal = userVals[0];//* Max Value
    for (i = 0; i < ARRAY_SIZE; ++i) {
         if (userVals[i] > maxVal) {
              maxVal = userVals[i];
         }
    }
    cout << " Max Value: " << maxVal << endl;
    minVal = userVals[0];//* Min Value
    for (i = 0; i < ARRAY_SIZE; ++i) {
        if (userVals[i] > minVal) {
            minVal = userVals[i];
        }
    }
    cout << " Min Value: " << minVal << endl;
    aveVal = userVals[0];//* Average Value
    for (i = 0; i < ARRAY_SIZE; ++i) {
         aveVal = aveVal + userVals[i];
    }
    cout << " Average Value: " << aveVal << endl;
    return 0;
}

就像我上面说的,我的代码应该能够找到任何集合数字数组的最大值、最小值、总和和平均值。目前,当我运行代码时,它会输出以下结果:

总值:447815718

最大值:914973176

最小值:914973176

平均值:1362788894

编辑 7/13/19:

这些是我对代码所做的更改,以使其正常工作。

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
const int ARRAY_SIZE = 12; // number of elements 
    int userVals[ARRAY_SIZE];// Array of input numbers
    int numArray[] ={24, -5, 72, 104, 0, 5, 89, -225, 19, 17, 16, 81}; // 
    Elements
    int i; // loop index
    int maxVal; // Max Value
    int minVal; // Min Value
    int sumVal; // Sum Value
    int aveVal; // Average Value

    sumVal = 0; //* Sum Value
    for (i = 0; i < ARRAY_SIZE; ++i) {
        sumVal = sumVal + numArray[i];
    }
    cout << " Sum Value: " << sumVal << endl;
    maxVal = numArray[0];//* Max Value
    for (i = 0; i < ARRAY_SIZE; ++i) {
        if (numArray[i] > maxVal) {
          maxVal = numArray[i];
        }
    }
    cout << " Max Value: " << maxVal << endl;
    minVal = numArray[0];//* Min Value
    for (i = 0; i < ARRAY_SIZE; ++i) {
        if (numArray[i] < minVal) {
         minVal = numArray[i];
        }
    }
    cout << " Min Value: " << minVal << endl;
    aveVal = numArray[0];//* Average Value
    for (i = 0; i < ARRAY_SIZE; ++i) {
        if (aveVal = numArray[0] + numArray[1] + numArray[2] + numArray[3] + 
          numArray[4] + numArray[5] + numArray[6] + numArray[7] + 
          numArray[8] + numArray[9] + numArray[10] + numArray[11])
            aveVal = aveVal / 12;
    }
    cout << " Average Value: " << aveVal << endl;
    return 0;
} 

在你的代码中,你指的是userVals,它永远不会被初始化。请改用numArray

顺便说一句:你可能应该重新考虑你计算平均值的方式......

最大值和总和应该没问题。

您正在寻找最大值而不是最小值,因为要使值成为新的最小值,它应该小于当前最小值,因此它应该是:

...
if (userVals[i] < minVal) {
... 

而不是:

...
if(userVals[i] > minVal){
...

对于平均值,您应该将总和除以ARRAY_SIZE。

还要小心,因为您没有初始化用户Vals。

标准库提供了算法标头中所需的一切。

若要查找最小值和最大值,请使用 std::minmax_element。

要查找总和,请使用 std::累加。

要找到平均值,请使用 std::累加并除以元素数。