数组/ C ++中的大量数字

时间:2018-10-28 15:03:04

标签: c++

如何编写一个程序来迭代大小为10的int数组并输出多少次该数组中的每个整数出现而又不输出相同的整数一次。
数组由1到10之间的10个随机int填充,,但是应该编写程序,就像程序员不知道那样
禁止使用另一个数组或更改给定数组的值。
也禁止使用std::map。 例如:

int arr[10] = {2, 2, 3, 5, 9, 1, 0, 5, 6, 4};

应该输出

0:1(abundance)

1:1

2:2 

3:1

4:1

5:2

6:1

9:1

1 个答案:

答案 0 :(得分:1)

如果您可能不使用任何类型的容器,那么我想到的唯一方法是:

#include <iostream>

int main(){
    const size_t SZ = 10;
    const int arr[SZ] = { 2, 2, 3, 5, 9, 1, 0, 5, 6, 4 };
    int max = arr[0];
    for(auto e : arr){
        if (e > max){
            max=e;
        }
    }

    for(int i = 0; i <= max; ++i){
        size_t cnt = 0;
        for (auto e : arr){
            if (i == e){
                ++cnt;
            }
        }
        if (cnt){
            std::cout << i << " : " << cnt << std::endl;
        }
    }
    return 0;
}

效率不是很高,但是由于您的限制,我想不出更好的方法。

输出:

0 : 1
1 : 1
2 : 2
3 : 1
4 : 1
5 : 2
6 : 1
9 : 1