c++ - 通过 c plus 中的函数查找中位数

标签 c++ arrays

您好,我已经创建了这个函数来查找中位数,但我得到的不是 3.5,而是 3。我不明白为什么?谁能指导我。谢谢。 :)

int median(int array[], int n)
{
  float med =0 ;
  int a=0;
  int b=0;
  float newMed=0;
    if (n % 2 ==0)
      a=n/2;
      b=(n/2)-1;
     med = (array[a] + array[b]);
     newMed = (med/2);
 //else
 //med = (n+1)/2;

 return newMed;
 }

int main()
{
  int array[6] = {1,2,3,4,6,7};
  cout<<"the median is: "<<median(array,6)<<"\n";
}

最佳答案

更改 int median(int array[], int n) (作为返回 int 的函数不能返回 3.5 )到

float median(int array[], int n)  // Return type int -> float

当您的返回类型为 int 时, 返回值 newMed计算为 3.5隐式转换为 int这是3 .这段代码大致等同于:

cout<<"the median is: "<< (int)median(array,6)<<"\n";

如果您使用适当的警告标志( -W -Wall -O2 ,用于回归分析的 O2 优化标志)编译您的程序,编译器应该警告您此类错误。

关于c++ - 通过 c plus 中的函数查找中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28935798/

相关文章:

php arrays in array sum value by specific key?

C++ 在 for 循环中使用预先计算的限制器

c++ - operator= on pointers 可能导致 mac 上的段错误

c++ - 堆或栈数组。用户定义的类型难题

c++ - 有没有更快的方法来清除控制台?

php - 查看数组中是否存在文本区域值

c++ - 如何在 C++ 中使用 ffmpeg 从视频中提取音频?

c++ - 处理标准一维数组时忽略前导空格

java - 使用无限索引填充数组 - Java

c++ - 将未知大小的数组传递给函数