Всем привет:) Очень нужна ваша небольшая помощь с кодом C#…Задание:частотный анализ русского текста
Есть небольшая проблема,результатом в richTextBox1 выводится только частота последней буквы “я” вот где ошибочка? как вывести весь список букв с частотами в richTextBox1?
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
namespace LAB6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
StreamReader f = new StreamReader("text.txt");
List<char> lines = new List<char>();
while (!f.EndOfStream)
{ string s = f.ReadLine();
lines.AddRange(s);
int countAllBukva = 0;
Dictionary<char, int> CountsBukv = new Dictionary<char, int>()
{
['а'] = 0,
['б'] = 0,
['в'] = 0,
['г'] = 0,
['д'] = 0,
['е'] = 0,
['ё'] = 0,
['ж'] = 0,
['з'] = 0,
['и'] = 0,
['й'] = 0,
['к'] = 0,
['л'] = 0,
['м'] = 0,
['н'] = 0,
['о'] = 0,
['п'] = 0,
['р'] = 0,
['с'] = 0,
['т'] = 0,
['у'] = 0,
['ф'] = 0,
['х'] = 0,
['ц'] = 0,
['ч'] = 0,
['ш'] = 0,
['щ'] = 0,
['ъ'] = 0,
['ы'] = 0,
['ь'] = 0,
['э'] = 0,
['ю'] = 0,
['я'] = 0,
};
foreach (char bukva in lines)
{
if (IsRussianBukva(char.ToLower(bukva)))
{
countAllBukva++;
CountsBukv[char.ToLower(bukva)]++;
}
}
foreach (var bukva in CountsBukv.Keys)
{
if (CountsBukv[bukva] != 0)
{
double n = Math.Round(Chastota(countAllBukva, CountsBukv[bukva]), 2);
richTextBox1.Text = Convert.ToString("Частота буквы " + bukva + " = " + n + "%");
}
}
}
}
public static double Chastota(int allBukvs, int bukva)
{
return Math.Round(((double)bukva / (double)allBukvs * 100.0), 2);
}
public static bool IsRussianBukva(char bukva)
{
char[] rus = new char[] { 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й',
'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'};
foreach (var item in rus)
{
if (item == char.ToLower(bukva)) return true;
}
return false;
}