计算数组中最小数字的出现次数

时间:2018-02-24 12:57:10

标签: c++

我试图找到数组中较小数字的出现次数,但似乎有些错误。我没有得到正确的结果。你能救我吗?

#include<iostream>

void readArray(int elements, int* array)
{
    for (int index = 0; index < elements; index++)
        std::cin >> array[index];
}

int main()
{
    int *array, elements;
    std::cout << "Number of elements: ";
    std::cin >> elements;

    array = new int[elements];
    readArray(elements, array);

    int min = array[0];
    int count = 1;

    for (int index = 1; index < elements; ++index)
    {
        if (array[index] = min)
            count++;
        else
            if (array[index] < min)
            {
                count = 1;
                min = array[index];
            }
    }

    std::cout << "Minimum is:  " << min;
    std::cout << "\nNumber of occurences is: " << count << "\n";

    //cleanup
    delete(array);

    return 0;
}

2 个答案:

答案 0 :(得分:0)

这种比较是错误的:

if (array[index] = min)

您需要使用double equal作为比较运算符:

if (array[index] == min)

答案 1 :(得分:0)

如果您已经知道最小的数字,那么只需使用std::count_if即可。  要在计数之前获得最小的数字,只需使用std::minmax_element。基本上,如果您只使用标准库中已提供的工具,则您的问题会减少为几行代码。