C/C++

С++ Как осуществить подсчет в массиве?

Вот часть кода из программы, мне нужно чтобы бралось число, сравнивалось с элементами массива, и считало сколько таких чисел встретилось (и какие это числа) . Но работает не так, не знаю как сделать так чтобы счетчик обнулялся
ES
Eldar Sadikov
26
#include <algorithm>
#include <iostream>
#include <random>
#include <iomanip>
#include <map>
using namespace std;
int main() {
uniform_int_distribution<> uid(1, 9);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
int matrix[10][25];
for (auto& row : matrix) {
generate(begin(row), end(row), rand);
}
auto show = [](int x) { cout << setw(3) << x; };
for (const auto& row : matrix) {
for_each(begin(row), end(row), show);
puts("");
}
map<int, int> box;
for (const auto& row : matrix) {
for (const auto value : row) {
++box[value];
}
}
for (const auto& [key, value] : box) {
cout << setw(2) << key << " =>" << setw(4) << value << '\n';
}
system("pause > nul");
}
for (int g = 0; g < 10; ++g) {
int counter = 0;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
if (mas[i][j] == g) { ++counter; }
}
}
cout << '[' << g << "] = " << counter << '\n';
}

Но проще и быстрее формировать массив всех счётчиков за один проход по матрице:

int counters[10] = {0};
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
if (mas[i][j] >= 0 && mas[i][j] <= 9) { ++counters[mas[i][j]]; }
}
}
for (int i = 0; i < 10; ++i) { cout << '[' << i << "] = " << counters[i] << '\n'; }
SC
Steel Cactus
60 099
Но это же примитив.
Пробуй любую задачу разбивать на простые подзадачи. И используй принцип "от простого к сложному".
Например, для начала тестируй свой код в одном цикле, в одномерном массиве.