gpt4 book ai didi

C++ 如何找到数组的模式?

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:02 25 4
gpt4 key购买 nike

我必须编写一个函数来查找类值数组的模式。它有两个参数:值数组和一个等于数组中有效值数量的变量。这听起来很简单,但经过一周的尝试后,我的代码似乎无法正常工作。

想法是获取一维数组并将其存储在二维数组中,其中第一个值是值数组中的值,第二个值是该值出现的次数。到目前为止,它还没有完全正常工作,或者根本没有。这个问题感觉应该很明显,但我已经难过了一个星期。

我正在使用包含以下内容的数组对其进行测试: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 20 20 20 20 20 20 20 20 20 20 20 20 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次。

最佳答案

2 x if (y[j][1] = max) - 类似于 (match = false) 问题 - 此时 max 为 2 等ever 值被 2 覆盖。

第一列的问题听起来像是由于 match = false 问题。在您修复它并重新编译后它是否仍然发生?

关于C++ 如何找到数组的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13755097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com