我一直在尝试使用这个原型来查找阵列的模式,但它没有返回正确的东西,有人可以告诉我我做错了什么。
int mode(int array[], int size)
{
int x;
int mode = 0;
int largest = 0;
for (x = 0; x < size; x++)
{
if (array[x] > largest)
{
largest = array[x];
mode = x;
}
}
return mode;
}
答案 0 :(得分:0)
首先,如果c ++数组的编号从0开始,那么x中的x应为0。还应检查x与&lt;尺寸。除此之外,代码还不错。
答案 1 :(得分:0)
在你提到的问题中,“用于查找数组的模式的原型”,但是这个程序旨在找到数组中最大数字的位置,因为
mode = x; // x is the value of i which in-turn is the position of element in the array
并返回mode的值。因此,显示了从第零个元素位置开始计数的最大元素的位置。
如果你想要一个程序找到模式(最常出现的元素/数字),这里就是
#include <stdio.h>
int mode(int array[], int size);
int main()
{
int Num[100],size,ret_Val,i;
clrscr();
printf("Enter the size of the array\n");
scanf("%d",&size);
printf("%d ",size);
for(i=0;i<size;i++)
{
scanf("%d",&Num[i]);
}
ret_Val=mode(Num,size);
printf("Mode of the array is %d",ret_Val);
getch();
return 0;
}
int mode(int array[], int size)
{
int cntMde = 1;
int i;
int cnt = 1;
int num = array[0];
int mode = num;
for ( i=1; i<size; i++)
{
if (array[i] == num)
{
cnt++;
}
else
{
if (cnt > cntMde)
{
cntMde = cnt;
mode = num;
}
cnt = 1;
num = array[i];
}
}
return mode;
}
输出
Mode of the array is 44
答案 2 :(得分:0)
我已经分析了四种计算阵列模式的方法:
您可以在本文中找到所有四种方法和性能比较的源代码:Finding Mode of an Array