Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用于查找c+中的平均值和峰值的函数+;_C++_Arrays - Fatal编程技术网

C++ 用于查找c+中的平均值和峰值的函数+;

C++ 用于查找c+中的平均值和峰值的函数+;,c++,arrays,C++,Arrays,我的任务: 程序应该有两个函数,一个用于计算数组中值的平均值(返回结果为double),另一个用于查找数组中的峰值(返回结果为无符号值)。数组(无符号整数)和数组中的值数(无符号整数)应作为参数通过函数传递 有人能解释一下如何修复我的代码吗 #include <iostream> using namespace std; #define SIZE 10 double findAverage (unsigned int); unsigned fin

我的任务:

程序应该有两个函数,一个用于计算数组中值的平均值(返回结果为double),另一个用于查找数组中的峰值(返回结果为无符号值)。数组(无符号整数)和数组中的值数(无符号整数)应作为参数通过函数传递

有人能解释一下如何修复我的代码吗

   #include <iostream>

   using namespace std;

   #define SIZE 10

   double findAverage (unsigned int);

   unsigned findPeak (unsigned int);

   unsigned numbers [SIZE] = {47, 1, 0, 1324, 99, 1000, 65536, 19, 0, 24000 };
   unsigned sum;
   unsigned peak;

    int main()
    {
        double average;

        for (int i = 0 ; i < SIZE; i++)
        {
            sum += numbers[i];
        }

        average = findAverage(numbers[SIZE]);

        cout << "The average value is : " << average << endl;

        peak = findPeak(numbers[SIZE]);

        cout << "The peak value is : " << peak << endl;
    }
    double findAverage (unsigned sum)
    {
        double average;
        average = sum / SIZE;
        return average;
    }
    unsigned findPeak (unsigned int *)
    {
        for (int i = 0 ; i < SIZE; i++)
        {

            if (numbers[i] > peak)
            {
                peak = numbers[i];
            }
        }
    return peak;
    }
#包括
使用名称空间std;
#定义尺寸10
双findAverage(无符号整数);
无符号findPeak(无符号int);
无符号数字[大小]={47,1,0,1324,99,1000,65536,19,0,24000};
无符号和;
无符号峰;
int main()
{
双倍平均;
对于(int i=0;icout这里有一个运行版本:

#include <iostream>

using namespace std;

double findAverage (unsigned int *, unsigned int);

unsigned int findPeak (unsigned int *, unsigned int);

int main()
{
    const int size = 10;
    unsigned int numbers [] = {47, 1, 0, 1324, 99, 1000, 65536, 19, 0, 24000 };

    double average = findAverage(numbers, size);

    cout << "The average value is : " << average << endl;

    unsigned int peak = findPeak(numbers, size);

    cout << "The peak value is : " << peak << endl;
}
double findAverage (unsigned int *numbers, unsigned int size)
{
    unsigned int sum = 0;
    for (int i = 0 ; i < size; i++)
    {
        sum += numbers[i];
    }
    double average = (double)sum / size;
    return average;
}
unsigned int findPeak (unsigned int *numbers, unsigned int size)
{
    unsigned int peak = 0;
    for (int i = 0 ; i < size; i++)
    {

        if (numbers[i] > peak)
        {
            peak = numbers[i];
        }
    }
    return peak;
}
#包括
使用名称空间std;
双findAverage(无符号整数*,无符号整数);
无符号整数findPeak(无符号整数*,无符号整数);
int main()
{
常数int size=10;
无符号整数[]={47,1,0,1324,99,1000,65536,19,0,24000};
双平均值=findAverage(数字、大小);

cout您将数字[大小]传递给findAverage,而不是sum

findPeak的定义中缺少参数的名称

此外,numbers[SIZE]不在数组中,numbers[SIZE-1]是数组的最后一个元素,因为索引从0开始

指定数组的大小并手动添加元素(在{}中)也不是一个好主意,很容易出错

另外,你应该把所有的代码都放在函数中。因此,在主要情况下,你只需要调用它们。也不要使用全局变量,它们在这里根本不是必需的,并且在更大的项目中可能会导致各种各样的问题。所以不要习惯坏习惯。 只需将变量放在main中,并将它们作为参数传递给函数。
(实际上您正在这样做,但目前没有必要这样做,因为例如sum是全局的。)

来自作业描述:

数组(无符号整数)和数组中的值数(无符号整数) int)应作为参数通过函数传递

函数中的两个参数在哪里

   double findAverage (unsigned int);
   unsigned findPeak (unsigned int);
这些函数可以通过以下方式定义

   double findAverage( const unsigned int a[], unsigned int n )
   {
      double sum = 0.0;

      for ( unsigned int i = 0; i < n; i++ ) sum += a[i];

      return n == 0 ? sum : sum / n;
   }

   unsigned int findPeak( const unsigned int a[], unsigned int n )
   {
      unsigned int max = 0;

      for ( unsigned int i = 1; i < n; i++ )
      {
         if ( a[max] < a[i] ) max = i;
      }

      return max;
   }
double findAverage(常量unsigned int a[],unsigned int n)
{
双和=0.0;
对于(无符号整数i=0;i
我定义了函数
findPeak
,这样它可以返回最大元素的索引。您可以重写它,使其返回最大元素本身

考虑到这些任务可以通过使用分别在标题
和中声明的标准算法
std::acculate
std::max_元素
来完成


此外,无需在全局名称中定义变量。它们可以像main的局部变量一样定义。

您的函数应该是独立的且可重用的:

他们不应该依赖于
大小

他们不应该直接使用数组:大小为的数组应该是parameters.Pass as
const
(无需修改数组)

下面是一个例子:

double findAverage (const unsigned myArray[], int arraySize)
{
    unsigned sum = 0;
    double average = 0.0;
    for (int i = 0 ; i < arraySize; i++)
    {
        sum += myArray[i];
    }

    if (arraySize) average = sum / arraySize;
    return average;
}

unsigned findPeak (const unsigned myArray[], int arraySize)
{
    unsigned peak = 0;
    for (int i = 0 ; i < arraySize; i++)
    {
        if (myArray[i] > peak)
        {
            peak = numbers[i];
        }
    }
    return peak;
}

“有人能解释一下如何修复我的代码吗?”“如果你告诉我们,到底需要用它修复什么(编译器错误、链接器错误、运行时错误、意外输出),可能是。
sum/SIZE
google integer math。我要在这里挑刺,说sum和peak应该初始化为0。可以在同一行声明和定义平均值。只写“unsigned”这是一种糟糕的做法,只在这里起作用,因为编译器假定int为类型。此外,他没有遵循这种模式,但他说他的函数应该采用数组的大小,而不是数组的大小。@dwcanillas你是对的,Amadeusz对初始化进行了编辑,我现在编辑了另一个建议
average = findAverage(numbers, SIZE);
peak = findPeak(numbers,SIZE);