В процессе обучения столкнулся с проблемой.
Заполнил двумерный массив символами от A до E (рандомное заполнение)
Потом хочу найти, сколько раз каждая буква входит в этот массив и вывести результат, например:
Массив
A B C
C A A
Результат:
A: 3 раза
B: 1 раза
С: 2 раза
Как правильно написать программу и можно ли сравнивать элемент массива и элемент типа char ?
Другие языки программирования и технологии
Сравнение переменных типа 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");
}
#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");
}
Элемент массива имеет тоже тип 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();}
#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();}
Самат Суйнишев
Лучше было char a[n][n]; - забыл подправить.
С++
map < char, int > cnt;
for( auto i: arr )cnt[i]++; // считаем
for( auto i: cnt)cout<<i.first<<": "<<i.second<<" раза\n"; // выводим
map < char, int > cnt;
for( auto i: arr )cnt[i]++; // считаем
for( auto i: cnt)cout<<i.first<<": "<<i.second<<" раза\n"; // выводим
https://pastebin.com/KxGHnuCN
Уточню что в программе нет проверки на правильность данных. Если в массиве будут другие данные, вместо символов латинского алфавита в верхнем регистре от A до E. То будет ошибка логики работы программы, что приведет к краху программы.
Уточню что в программе нет проверки на правильность данных. Если в массиве будут другие данные, вместо символов латинского алфавита в верхнем регистре от A до E. То будет ошибка логики работы программы, что приведет к краху программы.
Похожие вопросы
- C++ как переменную (signed int) разделить на старший и младший байт, а после записать в 2е другие переменные типа char?
- Подскажите аналог erase для работы с типом char на С++
- Зачем char в паскале? Зачем используется символьный тип, Char, в паскале?
- [C/C++] Oбъявление переменной типа структуры в этой же структуре
- Как удалить символ из переменной типа строки в PHP?
- как сравнить элементы массива типа char?
- как считывать строку типа char до пробела C++
- Паскаль. Сколько байт занимает переменная типа string[10]? 11? .
- Можно ли перегрузить opeato+ для переменных типа shot int?
- Как онулировать тип переменной char например был lol[3]="cok" а стал просто lol[3]?