Частота встречаемости символов в тексте - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д