在Array C编程中查找多个模式

时间:2017-03-10 05:27:00

标签: c

我有这个家庭作业,用户可以输入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");
}

1 个答案:

答案 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))