Jet_Shawn 发表于 2020-4-27 10:15:02

C++ 传数组的问题

本帖最后由 Jet_Shawn 于 2020-4-27 10:43 编辑

笔者的目标是想要求一个数组的中位数

# include <iostream>
using namespace std;

int findMiddle();

int main()
{
        // 初始化一个奇数数组
        int num1 = {1,2,3,4,5};
        // 初始化一个偶数数组
        int num2 = {1,2,3,4,5,6};
        float middle_num1;
        float middle_num2;
        middle_num1 = findMiddle(num1,5);
        middle_num2 = findMiddle(num2,6);
        cout<<"中位数分别为"<<middle_num1<<","<<middle_num2<<endl;
        system("pause");
        return 0;
}

float findMiddle(int num,int length)
{
    float middle_num;
    int half = length / 2;
    if (length%2 == 1)
    {
      middle_num = num; // 注意下标
    }
    else
    {
      middle_num = (num+num) / 2.0;//这里两个数的下标应该是half和half-1
    }
      
    return middle_num;
}

BngThea 发表于 2020-4-27 10:18:26

返回值改为float再试试

永恒的蓝色梦想 发表于 2020-4-27 10:20:26

23行改      int middle_num;

Jet_Shawn 发表于 2020-4-27 10:23:33

BngThea 发表于 2020-4-27 10:18
返回值改为float再试试

返回值是写的float哇

永恒的蓝色梦想 发表于 2020-4-27 10:29:30

Jet_Shawn 发表于 2020-4-27 10:23
返回值是写的float哇

int findMiddle(int *num,int length)睁眼说瞎话

Jet_Shawn 发表于 2020-4-27 10:33:07

永恒的蓝色梦想 发表于 2020-4-27 10:29
睁眼说瞎话

懂您意思了,我刚开始学,我以为前面定义了float middle_num就行了

永恒的蓝色梦想 发表于 2020-4-27 10:33:46

Jet_Shawn 发表于 2020-4-27 10:33
懂您意思了,我刚开始学,我以为前面定义了float middle_num就行了

那就选个最佳吧~{:10_297:}

sunrise085 发表于 2020-4-27 10:33:51

1、函数返回值改为float,
2、数组长度为偶数的时候,两个数的下标应该是half和half-1
3、两数之均值计算的时候,因为两数都是int所以应该出2.0,将之转为float
float findMiddle(int *num,int length)
{
      float middle_num;
      int half = length / 2;
      if (length%2 == 1)
      {
                middle_num = num; // 注意下标
      }
      else
      {
                middle_num = (num+num) / 2.0;//这里两个数的下标应该是half和half-1
      }
      
      return middle_num;
}

Jet_Shawn 发表于 2020-4-27 10:34:33

改了还是报错,不知道为啥
float findMiddle(int *num,int length)
{
        float middle_num;
        int half = length / 2;
        if (length%2 == 1)
        {
                middle_num = num; // 注意下标
        }
        else
        {
                middle_num = (num+num) / 2;
        }
       
        return middle_num;
}

Jet_Shawn 发表于 2020-4-27 10:43:54

还是在14行报错

Jet_Shawn 发表于 2020-4-27 11:02:52

永恒的蓝色梦想 发表于 2020-4-27 10:33
那就选个最佳吧~

您好,请问还是有问题,在调用函数的时候报错

Jet_Shawn 发表于 2020-4-27 11:29:45

ambiguating new declaration of 'float findMiddle(int*, int)' ,21行的定义给报错了

Jet_Shawn 发表于 2020-4-27 12:57:35

已解决,主前面的声明给搞错了,导致前后不一
页: [1]
查看完整版本: C++ 传数组的问题