【问题标题】:Finding Median in C在 C 中寻找中位数
【发布时间】:2018-05-17 09:34:49
【问题描述】:

我编写这段代码是为了求平均值和中位数,但我总是犯这些错误:

“71 警告:传递 'median' 的参数 1 使指针从整数而不进行强制转换”

和:

"14 注意:预期为 'int *' 但参数的类型为 'int'"。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

float mean(float x,int y)
{
float toplam = x;
int adet=y;

return toplam/adet;

}

int median(int AlinanSayilar[200],int adet)
{
int kacinci,kacinci2;
int medyan=0;

if(adet%2==1)
{
    kacinci=(adet/2)-1;
    kacinci2=kacinci+1;
    medyan=(AlinanSayilar[kacinci]+AlinanSayilar[kacinci2])/2;
}
else
{
    kacinci=(adet/2)-0.5;
    medyan=AlinanSayilar[kacinci];
}

printf("%d",medyan);

return 0;
}

int main()
{
int sayilar[200];
int i,k,j,holder;
float sum=0;

printf("Welcome the calculator...\n\tThis calculator finds mean,median and 
mode of your numbers...\n");
printf("\t\tNOTE:Please enter only integer numbers...\n\n");

for(i=0;true;i++)
{
    printf("Please enter a number(press -1 for exit): ");
    scanf("%d",&sayilar[i]);
    printf("\n");

    if(sayilar[i]==-1){
        break;
        }
    sum +=sayilar[i];
}

for(k=0;k<i-1;k++)
{
    for(j=k+1;j<i;j++)
    {
        if(sayilar[k]>sayilar[j])
        {
            holder=sayilar[k];
            sayilar[k]=sayilar[j];
            sayilar[j]=holder;
        }
    }
}

printf("Mean:%.2f",mean(sum,i));
median(sayilar[i],i);

system("pause");
return 0;
}

我该怎么办?提前感谢您的帮助。如果您知道查找模式(最重复的数字),您可以编写它的代码吗?

【问题讨论】:

  • sayilar[i] 是一个int;也许你的意思是:median(sayilar[i],i); --> median(sayilar, i);
  • 它有效。感谢您的帮助。

标签: c arrays median


【解决方案1】:
#include <stdio.h>
#include <stdlib.h>
int b[100],m,md,i,n1,md1,md2,mdt,sum,n;
int mean(int n, int a[])
{
    for(i=0;i<n;i++)
    {
        sum+=a[i];
    }
    m=sum/n;
    return m;
}
int median(int n,int a[])
{
    if(n%2==0)
    {
        md1=(n/2)-1;
    md2=(n/2);
    mdt=(a[md1]+a[md2])/2;
    return mdt;


    }
    else
    {
     md=(n/2)-1;
        return a[md];
    }
}
 main()
{
    int rmean,rmedian;
    n1=10;//declaring the number of integers
    for(i=0;i<n1;i++)
    {
        b[i]=i+1;// assigning the integer values of the array in which mean and //median is to be found

    }
    rmean=mean(n1,b);
    rmedian=median(n1,b);
    printf("the mean :%d",rmean);
    printf("the median: %d",rmedian);
}

【讨论】:

    【解决方案2】:

    您的中值函数接受一个数组和一个整数,但在您的 main() 函数中,您使用两个整数调用它。 sayilar[i] 是 sayilar 数组的第 i 个索引,所以它是一个 int。

    您可以通过将行更改为来修复它

    median(sayilar,i);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-12
      • 2011-11-04
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 2020-04-25
      相关资源
      最近更新 更多