Advertisement
Guest User

nulevik

a guest
Oct 21st, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.23 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. namespace CW0
  9. {
  10.     class Program
  11.     {
  12.         static Random rnd = new Random();
  13.         /// <summary>
  14.         /// Проверка числа на правильность ввода.
  15.         /// </summary>
  16.         /// <param name="num">Число для проверки</param>
  17.         static bool CheckNumber(out int num)
  18.         {
  19.             if (!(int.TryParse(Console.ReadLine(), out num) && num > 0))
  20.             {
  21.                 return false;
  22.             }
  23.             return true;
  24.         }
  25.         /// <summary>
  26.         /// Создание массива из случайных строчных латинских букв
  27.         /// </summary>
  28.         /// <param name="N">Количество букв в строке</param>
  29.         static char[] CreateArray(int N)
  30.         {
  31.             char[] chArr = new char[N];
  32.  
  33.             for (int i = 0; i < chArr.Length; i++)
  34.             {
  35.                 chArr[i] = (char)rnd.Next('a', 'z' + 1);
  36.             }
  37.  
  38.             return chArr;
  39.         }
  40.         /// <summary>
  41.         /// Метод для нахождения чаще встречаемого символа.
  42.         /// </summary>
  43.         /// <param name="str">Строка для проверки</param>
  44.         static void MostCommon(string str)
  45.         {
  46.             int[] numberOfRepeats = new int[str.Length];
  47.             int k = 0;
  48.  
  49.             for (int i = 0; i < str.Length; i++)
  50.             {
  51.                 for (int j = 0; j < str.Length; j++)
  52.                 {
  53.                     if ((int)str[j] == (int)str[i])
  54.                     {
  55.                         k++;
  56.                     }
  57.                 }
  58.                 numberOfRepeats[i] = k;
  59.                 k = 0;
  60.             }
  61.  
  62.             int max = numberOfRepeats.Max();
  63.             Console.WriteLine("Чаще встречается символ: {0} раз(а)", max);
  64.  
  65.         }
  66.         /// <summary>
  67.         /// Метод для создания нового массива, содержащего символы, кратные числу К
  68.         /// </summary>
  69.         /// <param name="str">Строка для проверки</param>
  70.         static void NOK(string str)
  71.         {
  72.             while (true)
  73.             {
  74.                 Console.WriteLine("Введите число для нахождения кодов символов кратные ему:");
  75.                 int k;
  76.                 char[] chArr1 = new char[0];
  77.  
  78.                 if (!CheckNumber(out k))
  79.                 {
  80.                     Console.WriteLine("Error!");
  81.                     continue;
  82.                 }
  83.  
  84.                 for (int i = 0; i < str.Length; i++)
  85.                 {
  86.                     if (((int)str[i] - 97) % k == 0)
  87.                     {
  88.                         Array.Resize(ref chArr1, chArr1.Length + 1);
  89.                         chArr1[chArr1.Length - 1] = str[i];
  90.                     }
  91.                 }
  92.                 string result = new string(chArr1);
  93.                 Console.WriteLine("Массив с кодами символов кратные {1}: {0}", result, k);
  94.                 break;
  95.             }
  96.         }
  97.         /// <summary>
  98.         /// Метод для нахождения количества элементов массива в заданном интервале
  99.         /// </summary>
  100.         /// <param name="str">Строка для проверки</param>
  101.         /// <param name="ch1">Первый интервал</param>
  102.         /// <param name="ch2">Второй интервал</param>
  103.         static void Interval(string str, char ch1, char ch2)
  104.         {
  105.             int code_ch1 = (int)ch1;
  106.             int code_ch2 = (int)ch2;
  107.             int k = 0;
  108.  
  109.             for (int i = 0; i < str.Length; i++)
  110.             {
  111.                 if (((int)str[i] >= code_ch1) && ((int)str[i] <= code_ch2))
  112.                 {
  113.                     k++;
  114.                 }
  115.             }
  116.             Console.WriteLine("Количество элементов входящих в диапазон [{0};{1}]: {2}", ch1, ch2, k);
  117.         }
  118.         /// <summary>
  119.         /// Метод для нахождения частоты встречаемости каждого элемента массива
  120.         /// </summary>
  121.         /// <param name="str">Строка для проверки</param>
  122.         static void Frequency(string str)
  123.         {
  124.             double[] freq = new double[str.Length];
  125.             int k = 0;
  126.  
  127.             Console.WriteLine("Частота встречаемости каждого символа:");
  128.             for (int i = 0; i < str.Length; i++)
  129.             {
  130.                 for (int j = 0; j < str.Length; j++)
  131.                 {
  132.                     if ((int)str[j] == (int)str[i])
  133.                     {
  134.                         k++;
  135.                     }
  136.                 }
  137.                 freq[i] = (double)k / str.Length;
  138.                 Console.WriteLine("{0}: {1:f3}", str[i], freq[i]);
  139.                 k = 0;
  140.             }
  141.  
  142.  
  143.         }
  144.         static void Main(string[] args)
  145.         {
  146.             Console.WriteLine("Введите количество символов в строке:");
  147.             int N;
  148.             //Проверка ввода данных
  149.             if (!(CheckNumber(out N)))
  150.             {
  151.                 Console.WriteLine("Error!");
  152.                 return;
  153.             }
  154.  
  155.             char[] chArr = CreateArray(N);
  156.             string str = new string(chArr);
  157.             Console.Write("Новая строка: ");
  158.             Console.WriteLine(chArr);
  159.  
  160.             MostCommon(str);
  161.             NOK(str);
  162.  
  163.             char ch1, ch2;
  164.             Console.WriteLine("Введите два символа для определения диапазона");
  165.             if (!(char.TryParse(Console.ReadLine(), out ch1) && char.TryParse(Console.ReadLine(), out ch2)
  166.                 && (int)ch1 < (int)ch2))
  167.             {
  168.                 Console.WriteLine("Error");
  169.                 return;
  170.             }
  171.             Interval(str, ch1, ch2);
  172.             Frequency(str);
  173.         }
  174.     }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement