Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2021, 13:09   #1
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию Отсортировать буквы по количеству вхождений в текст

Здраствуйте,есть задание,в тексте(текст берется с файла) посчитать для каждой буквы алфавита ее количество в тексте,нужно отсортировать их таким образом,от буквы которая чаще всего появляется до буквы которая реже всего появляется,а еще нужно чтобы например буквы П и п считало как одну букву,вот мой код
Код:
#include <iostream>
#include <string>
#include<fstream>
using namespace std;
void f4(string s) {
    string  s1;
    s1 = s;
    int n = s.size(), n1 = n, count;
 
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (s[i] == s[j])
            {
                for (int k = j; k < n - 1; k++)
                    s[k] = s[k + 1];
                n--;
                j--;
            }
 
    for (int i = 0; i < n; i++)
    {
        count = 0;
        for (int j = 0; j < n1; j++)
            if (s[i] == s1[j]) count++;
        cout << s[i] << " - " << count << "\n";
    }
}
 
int main()
{
    setlocale(LC_ALL, "Ukrainian");
    string s, text;
ifstream in("E:\\1.txt");
while(getline(in,s)) text+=s;
f4(text);
    return 0;
}
nonameii3ii вне форума Ответить с цитированием
Старый 05.11.2021, 22:39   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,315
По умолчанию

Сделай так:
1. Создай массив целых беззнаковых, типа - unsigned int i и обнулить его;
Размер массива - размер алфавита языка (английский, украинский, ...).
2. Получаешь текст. Просматриваешь до обнаружения конца, например, это файл.
Каждый символ нормализуешь к размеру массива. Тут имеется ввиду то, что если элементы массива начинаются с нуля, то символ 'a' и 'A' должны получить индекс 0.
Что-то вроде
index = toupper(ch) - 'A' // ch - символ строки.
3. Выполнить инкремент соответствующего элемента массива: подсчитываем число появлений символа.
4. После работы такой функции будем иметь частотное распределение символов.
5. Если массив сделать двумерным (второй размер будет содержать номер элемента массива) и правильно отсортировать, то в одном столбце будет, например, частота появления символа, а во втором - номер символа (из него несложно получить и код символа).
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 06.11.2021, 02:35   #3
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию

Я сделала уже,спасибо за совет)
nonameii3ii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отсортировать вектор по количеству дубликатов строк VLADOSW2001 Помощь студентам 1 04.11.2019 12:21
Как отсортировать комментарии на youtube по количеству лайков? isnalu Свободное общение 0 07.09.2018 22:00
Отсортировать файл по словам (по количеству символов в слове), по убыванию. Delphi 7 Volkk Помощь студентам 0 02.04.2018 21:12
как отсортировать комментарии по количеству лайков(ютуб) ололошенько Свободное общение 4 24.03.2014 16:17
Задача на асемблере: Написать программу для подсчета количества вхождений в строку 3-й буквы Вашей фамилии. Vlt Помощь студентам 0 13.03.2013 21:01