Частота встречаемости символов в тексте - C#
Формулировка задачи:
Привет. Помогите, пожалуйста.
Нужно, чтобы программа брала текст из txt файла и подсчитывала количество русских и английских букв в нём. Кроме того, нужно вычислить долю гласных и согласных букв, а также определить сколько раз гласная буква следует за согласной, сколько раз согласная буква следует за гласной.
Всё это нужно сделать в консоли.
Вот код, но он не выводит русские символы и не могу понять как сделать дополнительное.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace PoiskBukv
{
class Program
{
static void poisk(string stroka, int f)
{
bool q = true;
char[] Stroka2 = stroka.ToCharArray();
string alfovit = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
char[] alfovit2 = alfovit.ToCharArray();
for (int i = 0; i < 59; i++)
{
for (int j = 0; j < stroka.Length; j++)
if ((alfovit2[2 * i] == Stroka2[j]) || (alfovit2[2 * i + 1] == Stroka2[j])) f = f + 1;
if (f != 0)
if (q) Console.WriteLine("");
{
Console.WriteLine("Этот символ " + alfovit2[2 * i] + " встречается " + f + " раз");
q = false;
}
f = 0;
}
}
static void Main()
{
int k = 0;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Эта программа которая показывает сколько раз буквы встречаеться в тексте.");
Console.ResetColor();
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("В тексте найдены такие буквы :");
Console.ResetColor();
Console.ForegroundColor = ConsoleColor.Red;
System.IO.StreamReader sr = System.IO.File.OpenText(@"Путь к файлу");
string stringData = sr.ReadToEnd();
sr.Close();
poisk(stringData, k);
Console.ReadKey();
}
}
}Решение задачи: «Частота встречаемости символов в тексте»
textual
Листинг программы
public partial class Form1 : Form
{
string alfovit = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
string alfRus = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";
string alfRusGlas = "АаЕеЁёИиЙйОоУуЫыЭэЮюЯя";
string alfRusSoglas = "БбВвГгДдЖжЗзКкЛлМмНнПпРрСсТтФфХхЦцЧчШшЩщЪъ";
string alfEng = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
string alfEngGlas = "AaEeIiJjOoUuYy";
string alfEngSoglas = "BbCcDdFfGgHhKkLlMmNnPpQqRrSsTtVvWwXxZz";
List<char> alfRusList = new List<char>();
List<char> alfRusGlasList = new List<char>();
List<char> alfRusSoglasList = new List<char>();
List<string> alfRusGlasSoglas = new List<string>();
List<string> alfRusSoglasGlas = new List<string>();
List<char> alfEngList = new List<char>();
List<char> alfEngGlasList = new List<char>();
List<char> alfEngSoglasList = new List<char>();
List<string> alfEngGlasSoglas = new List<string>();
List<string> alfEngSoglasGlas = new List<string>();
public Form1()
{
InitializeComponent();
//Русский
alfRusList = alfRus.ToCharArray().ToList();
alfRusGlasList = alfRusGlas.ToCharArray().ToList();
alfRusSoglasList = alfRusSoglas.ToCharArray().ToList();
//Русский: гласная-согласная
for (int i = 0; i < alfRusGlas.Length; i++)
for (int j = 0; j < alfRusSoglas.Length; j++)
alfRusGlasSoglas.Add(alfRusGlas[i].ToString() + alfRusSoglas[j].ToString());
//Русский: согласная-гласная
for (int i = 0; i < alfRusSoglas.Length; i++)
for (int j = 0; j < alfRusGlas.Length; j++)
alfRusSoglasGlas.Add(alfRusSoglas[i].ToString() + alfRusGlas[j].ToString());
//Тоже для английского
}
private void button1_Click(object sender, EventArgs e)
{
string text = "";
char[] tx = textBox1.Text.ToLower().ToCharArray();
//создаем пары букв из текста
List<string> Par = new List<string>();
string tex = textBox1.Text;
char[] znaki = { ' ', '.', ';', ':', '!', '?' };
for (int i = 1; i < tex.Length; i++)
{
if(znaki.Contains(tex[i-1]) || znaki.Contains(tex[i])) continue;
Par.Add(tex[i - 1].ToString() + tex[i].ToString());
}
Par = Par.Distinct().ToList();
int Rus = tx.Intersect(alfRusList).Count();
text += "Количество русских букв: " + Rus.ToString()+"\r\n";
int RusGlas = tx.Intersect(alfRusGlasList).Count();
text += "Количество гласных русских букв: " + RusGlas.ToString() + "\r\n";
int RusSoglas = tx.Intersect(alfRusSoglasList).Count();
text += "Количество согласных русских букв: " + RusSoglas.ToString() + "\r\n";
int RusGlasSoglas = Par.Intersect(alfRusGlasSoglas).Count();
text += "Количество русских пар гласная-согласная: " + RusGlasSoglas.ToString() + "\r\n";
int RusSoglasGlas = Par.Intersect(alfRusSoglasGlas).Count();
text += "Количество русских пар coгласная-гласная: " + RusSoglasGlas.ToString() + "\r\n";
//Тоже для английского
textBox2.Text = text;
}
}