计算一个值在C ++中出现在数组中的时间

时间:2017-11-05 18:57:57

标签: c++ arrays frequency

我有一个任务,我有一个数组,让我们说{2,3,4,5,2,2,3,5,5,5} 并且只使用一个循环我必须找到最小值和最大值。这个我已经有了。我还必须计算(在同一循环中)这个最小值和最大值出现的次数。我有那个问题。我只能使用一个循环! 输出应该像: 最低:2出现:3次 最大值:5出现:4次

代码:

int size = sizeof(tab) / sizeof(int);
int max = tab[0];
int min = tab[0];
int minCounter = 1;
int maxCounter = 1;

for (int i = 0; i < size; i++) {
    cout << "Tab[" << i+1 << "]: " << tab[i] << endl;
    if (tab[i] > max) {
        max = tab[i];
        maxCounter++;
    }
    if (tab[i] < min) {
        min = tab[i];
        minCounter++;
    }
}

2 个答案:

答案 0 :(得分:0)

维护max_count变量,每次遇到新的最大值时将其重置为1.

(解决方案的其余部分留给读者练习......)

答案 1 :(得分:-1)

在您的代码中,您没有打印正确的值,并且代码不足以打印出所需的输出。你应该决定将输出打印出循环,如果你想计算max和min出现的时间,你应该再添加一个if语句来检查max == tab [i]和min = tab [i]的时间。如果你在if(tab [i]&gt; max)和if(tab [i]&lt; min)之后执行此操作,则不需要将minCounter和maxCounter初始化为1,否则需要将它们初始化为1。

希望这有帮助。