Частота встречаемости символов в тексте - 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;
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы