Member 14188174 Ответов: 2

Как написать программу подсчета букв на языке Си#


Напишите программу, которая создает вероятностную модель для текстового файла с подсчитанными вхождениями определенных букв.
И он должен отобразить его в таблице, сколько отдельных символов (в коде ASCII) находится в тексте, считанном из файла.
а вероятность вычисляется с помощью:
P = number of occurrences / all characters

Что я уже пробовал:

var plik = File.ReadAllLines("example.txt");
        var liczba = 'z' - 'a' + 1;
        
        var liczniki = Enumerable.Repeat(0, liczba).ToList();
        
        foreach (var słowo in plik) {
            foreach (var znak in słowo) {
                
                if (znak >= 'a' && znak <= 'z') {
                    liczniki[znak - 'a'] += 1;
                }     
            }

2 Ответов

Рейтинг:
0

OriginalGriff

Самое простое решение состоит в том, чтобы прочитать весь файл в массив символов, а затем отсортировать массив. Таким образом, идентичные символы находятся рядом друг с другом и их легко сосчитать.

Второй простейший способ-использовать методы Linq и группировать символ. Затем вы можете подсчитать количество групп, чтобы дать вам нужные цифры.

Но самый эффективный способ-это иметь два массива: один из символов, которые вы считаете, и один из счетчиков. Установите массив символов на фактические символы и установите отсчеты на все нули.
Затем, когда вы найдете символ, увеличьте количество в массиве counts. Когда вы обработали все данные, вы можете просто распечатать результаты из пары массивов.


Maciej Los

5ed!

Рейтинг:
0

phil.o

Вы также можете использовать Dictionary<char, int> который содержит текущее количество символов для каждого символа:

Dictionary<char, int> dic = new Dictionary<char, int>();

foreach (char c in theString)
{
   if (!dic.ContainsKey(c)) { dic.Add(c, 0); }
   dic[c]++;
}


Maciej Los

5ed!