Другие языки программирования и технологии

Сравнение переменных типа char в с++

В процессе обучения столкнулся с проблемой.
Заполнил двумерный массив символами от A до E (рандомное заполнение)
Потом хочу найти, сколько раз каждая буква входит в этот массив и вывести результат, например:
Массив
A B C
C A A
Результат:
A: 3 раза
B: 1 раза
С: 2 раза

Как правильно написать программу и можно ли сравнивать элемент массива и элемент типа char ?
#include <iostream>
#include <random>
#include <map>
using namespace std;
int main() {
char matrix[5][9];
const short a = 'A', p = 'P';
const uniform_int_distribution<short> uid(a, p);
random_device rd;
mt19937 gen(rd());
for (auto &row : matrix) for (auto &ch : row) ch = static_cast<char>(uid(gen));
for (auto &row : matrix) {
for (auto ch : row) cout << ' ' << ch;
cout.put('\n');
}
cout.put('\n');
map<char, size_t> box;
for (auto &row : matrix) for (auto &ch : row) ++box[ch];
for (auto item : box) cout << item.first << ": " << item.second << '\n';
cout.put('\n');
system("pause");
}
АС
Алекс Сторчиенко
70 069
Лучший ответ
Элемент массива имеет тоже тип char. Конечно, можно сравнивать.

#include "iostream"
#include "ctime"
#include "cstdlib"
using namespace std;
int main(){
const int n=5; int k[n]={}; char a[5][5], c='A'; srand(time(NULL));
for(auto &i:a)for(auto &j:i)j=rand()%('E'-'A'+1)+'A',k[j-'A']++;
for(auto &i:a){for(auto &j:i)cout<< j<<' '; cout<< endl;} cout<< endl;
for(auto &i:k)cout<< c++<<": "<< i<< endl; cin.get();}
Самат Суйнишев
Самат Суйнишев
60 344
Самат Суйнишев Лучше было char a[n][n]; - забыл подправить.
С++

map < char, int > cnt;

for( auto i: arr )cnt[i]++; // считаем

for( auto i: cnt)cout<<i.first<<": "<<i.second<<" раза\n"; // выводим
Сысуев Максим
Сысуев Максим
93 501
https://pastebin.com/KxGHnuCN
Уточню что в программе нет проверки на правильность данных. Если в массиве будут другие данные, вместо символов латинского алфавита в верхнем регистре от A до E. То будет ошибка логики работы программы, что приведет к краху программы.