Нужна программа, которая считает количество вхождений в текст каждого символа.
Вот мой код:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string text = "", symbol = "";
int count[256] = { 0 };
int f = 0;
//считываем текст
cout << "Input the text:" << endl;
getline(cin, text);
//меняем заглавные буквы на строчные
transform(text.begin(), text.end(), text.begin(), tolower);
//считаем количество вхождений каждого символа
//(если посчитали, то заменяем на '^')
for (int i = 0; i < text.length(); i++)
{
if (text[i] != '^')
{
symbol += " ";
symbol[f] = text[i];
count[f]++;
text[i] = '^';
for (int j = i + 1; j < text.length(); j++)
{
if (text[j] != '^' && text[j] == symbol[f])
{
text[j] = '^';
count[f]++;
}
}
f++;
}
}
//выводим символ и его количество вхождений в текст
cout << endl;
for (int i = 0; i < symbol.length(); i++) cout << symbol[i] << "\t";
cout << endl;
for (int i = 0; i < symbol.length(); i++) cout << count[i] << "\t";
cout << endl;
system("pause");
return 0;
}
1) Почему-то заглавные буквы не меняются на строчные.
2) Не знаю, как упорядочить при выводе символы по количеству их вхождений (по убыванию).
Функция tolower
не будет работать с русскими буквами. Наверное, должна, но я не слышал, чтоб где работала.
А у вас я бы собирал массив с символами сразу, а потом сортировал (вот проверка, что код работает):
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string text = "", symbol = "";
struct data {
char c;
int count;
} count[256];
for(int i = 0; i < 256; i++) {
count[i].c = i;
count[i].count = 0;
}
//считываем текст
cout << "Input the text:" << endl;
getline(cin, text);
//меняем заглавные буквы на строчные
transform(text.begin(), text.end(), text.begin(), tolower);
//считаем количество вхождений каждого символа
//(если посчитали, то заменяем на '^')
for (int i = 0; i < text.length(); i++)
{
count[text[i]].count++;
}
sort(count,count+256,[](const data& d1, const data& d2){ return d1.count > d2.count; });
//выводим символ и его количество вхождений в текст
for (int i = 0; i < 256; i++)
if (count[i].count)
cout << count[i].c << " : " << count[i].count<< endl;
system("pause");
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем привет, никак не могу разобраться, как написать post-запрос к яндекс кассеСам запрос, который ниже проверял, все работает
Подскажите,пожалуйста, какой нужен код, для размещения файлов форматовglb,
Получаю Excel файл из сторонней программыЧитаю Excel, получаю список из ячеек