【发布时间】: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); -
它有效。感谢您的帮助。