我有这个家庭作业,用户可以输入10个号码并找到这10个号码的模式。我有一个模式工作,我的问题是我不知道如何开始在数组中找到多个模式。 EX。 1 1 2 2 3 4 5 6 7 8阵列模式为1,2
这里是模式的代码
void displayMode(int numArray[])
{
int countArray[MAX];
int modeCount = 0;
int modeNumber;
int i = 0;
int j = 0;
for(i=0; i < MAX; i++)
{
countArray[i] = 0;
}
for(i=0; i < MAX; i++)
{
for (j = 0; j < MAX; j++)
{
if (numArray[i] == numArray[j])
countArray[i]++;
}
}
for (i=0; i < MAX; i++)
{
if (countArray[i] > modeCount)
{
modeCount = countArray[i];
modeNumber = numArray[i];
}
}
if (modeCount > 1)
printf("\nThe mode of the array is: %d",modeNumber);
else
printf("\nThe mode of the array is: None");
}
答案 0 :(得分:-1)
您需要使用尺寸合适的容器。使用C ++中的int modeNumbers[MAX];
size_t modeSize = 0;
可以轻松实现这一点,但无论如何,这在C中是一个粗略的(非内存效率)实现。
使用modeNumbers而不是one,并为size创建变量:
if (countArray[i] > modeCount)
{
modeCount = countArray[i];
modeNumbers[0] = numArray[i];
modeSize = 1;
} else if (countArray[i] == modeCount) {
modeNumbers[modeSize++] = numArray[i];
}
然后,追加尺寸:
if (modeCount > 1) {
printf("\nThe mode of the array is: ");
for (size_t i = 0; i < modeSize; ++i) { printf("%s%d", i == 0?"":", ", modeNumbers[i]; }
} else {
printf("\nThe mode of the array is: None");
}
最后,使用for循环输出它:
babynames %>%
filter(name == "Jordan") %>%
group_by(year, sex) %>%
summarize(total = sum(n))