我必须编写一个函数来查找类值数组的模式。它有两个参数:值数组和一个等于数组中有效值数量的变量。这听起来很容易,但经过一周的尝试后,我的代码似乎无法正常工作。
这个想法是获取一维数组并将其存储在二维数组中,其中第一个值是值数组中的一个值,第二个是该值出现的次数。到目前为止,它的工作并不完全正确,或者根本没有。这个问题感觉应该很明显,但我已经被难住了一个星期。
我正在使用包含以下内容的数组对其进行测试:9.0、4.0、4.0、4.0、5.0、5.0、6.0、6.0、6.0、7.0、1.0、9.0、10.0
代码:
void mode(double x[], const int n)
{
int j, k, m=1, p, numofmodes=0;
bool match=false, breaker;
double y[100][2]={0}, max=0;
y[0][0] = x[0];
y[0][1] = 1;
for(j=1; j<=(n-1); j++) //
{
for (k=0; k<=(m-1); k++)
if (x[j] == y[k][0])
{
y[k][1]++;
match = true;
}
if (match == false)
{
y[m][0] = x[j];
y[m][1] = 1;
m++;
}
match = false;
}
for(j=0; j<=(n-1); j++)
{
if (y[j][1] > max)
max = y[j][1];
}
for(j=0; j<=(n-1); j++)
{
if (y[j][1] = max)
numofmodes++;
}
for(j=0; j<=(n-1); j++)
{
cout<<y[j][0]<<" "<<y[j][1]<<endl;
}
cout<<"There are "<<numofmodes<< " modes in the data set."<<endl;
for(j=0; j<=(n-1); j++)
{
if (y[j][1] = max)
{
cout<<y[j][0]<<" appears "<<max<<" times."<<endl;
}
}
}
输出:9 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 数据集中有 13 种模式。9 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。0 出现 2 次。