
C/C++
С++ Как осуществить подсчет в массиве?
Вот часть кода из программы, мне нужно чтобы бралось число, сравнивалось с элементами массива, и считало сколько таких чисел встретилось (и какие это числа) . Но работает не так, не знаю как сделать так чтобы счетчик обнулялся


#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");
}
#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'; }
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'; }
Но это же примитив.
Пробуй любую задачу разбивать на простые подзадачи. И используй принцип "от простого к сложному".
Например, для начала тестируй свой код в одном цикле, в одномерном массиве.
Пробуй любую задачу разбивать на простые подзадачи. И используй принцип "от простого к сложному".
Например, для начала тестируй свой код в одном цикле, в одномерном массиве.
Похожие вопросы
- Заменить нулями элементы массива, которые расположены между первым минимальным и последним максимальным элементами масси
- Помогите исправить и дописать программу с массивами на языке C++. Буду благодарен, т. к. самому уже не понятно.
- Нужна помощь в составлении одномерных массивов С++
- Кольцевой сдвиг массива
- Помогите пожалуйста с Массивами .В языке С .Заполнил 2-мерный массив N и M случайными числами дальше не понимаю.
- Устройство статических и динамических массивов в оперативной памяти (...)
- Помогите пожалуйста - создать 4 массива на c++
- Помощь с Массивами C++
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- Двумерный динамический массив с неизвестны количеством столбиков или строк