Advertisement
ivetasand

prepformod1

Oct 22nd, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.80 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Threading.Tasks;
  5.  
  6. namespace task_02
  7. {
  8.     class Program
  9.     {
  10.         static Random rnd = new Random();
  11.  
  12.         /// <summary>
  13.         /// Поиск среднего арифметического.
  14.         /// </summary>
  15.         /// <param name="arr"></param>
  16.         /// <returns></returns>
  17.         static double MidValue(int[] arr)
  18.         {
  19.             double summery = 0;
  20.  
  21.             for (int i = 0; i < arr.Length; i++)
  22.             {
  23.                 summery += arr[i];
  24.             }
  25.  
  26.             return summery / arr.Length;
  27.         }
  28.  
  29.         /// <summary>
  30.         /// Нахождение медианы.
  31.         /// </summary>
  32.         /// <param name="N"></param>
  33.         /// <param name="arr"></param>
  34.         /// <returns></returns>
  35.         static double FindMedian(int N, int[] arr)
  36.         {
  37.             int[] medarr = new int[N];
  38.             Array.Copy(arr, medarr, N);
  39.             Array.Sort(medarr);
  40.             if (N % 2 != 0)
  41.             {
  42.                 return medarr[N / 2 - 1]; // 0 1 2 3 4 5
  43.             }
  44.  
  45.             return (medarr[N / 2 - 1] + medarr[N / 2]) / 2.0;
  46.         }
  47.  
  48.         /// <summary>
  49.         /// Поиск самого длинного подмассива подряд идущих простых чисел.
  50.         /// </summary>
  51.         /// <param name="arr"></param>
  52.         /// <returns></returns>
  53.         static int[] FindMaxOdd(int[] arr)
  54.         {
  55.             int count2 = 0, count1 = 0, index = 0;
  56.  
  57.             for (int i = 0; i < arr.Length; i++)
  58.             {
  59.                 if (arr[i] % 2 == 1)
  60.                 {
  61.                     count1 += 1;
  62.                 }
  63.  
  64.                 if (count1 > count2)
  65.                 {
  66.                     index = i;
  67.                     count2 = count1;
  68.                 }
  69.  
  70.                 if (arr[i] % 2 == 0)
  71.                 {
  72.                     count1 = 0;
  73.                 }
  74.             }
  75.             int[] oddarr = new int[count2];
  76.  
  77.             for (int i = 0; i < count2; i++)
  78.             {
  79.                 oddarr[i] = arr[index - count2 + 1 + i];
  80.             }
  81.  
  82.             return oddarr;
  83.         }
  84.  
  85.         /// <summary>
  86.         /// Частота вхождения символов.
  87.         /// </summary>
  88.         /// <param name="arr"></param>
  89.         static void TimesFound(int[] arr)
  90.         {
  91.             int maxcount = 0, maximum;
  92.             int index = 0;
  93.             int[] arrcounts = new int[10];
  94.  
  95.             for (int i = 0; i < arr.Length; i++)
  96.             {
  97.                 arrcounts[arr[i]] += 1;
  98.             }
  99.  
  100.             Console.WriteLine("\n");
  101.             Console.WriteLine("Частота встречаемости чисел по убыванию: ");
  102.             for (int i = 0; i < 10; i++)
  103.             {
  104.                 maximum = MaxValue(arrcounts, ref index);
  105.                 if (maximum == 0)
  106.                 {
  107.                     continue;
  108.                 }
  109.                 Console.WriteLine(maximum + " " + index);
  110.             }
  111.         }
  112.  
  113.         /// <summary>
  114.         /// Максимальное значение.
  115.         /// </summary>
  116.         /// <param name="arrcounts"></param>
  117.         /// <param name="index"></param>
  118.         /// <returns></returns>
  119.         static int MaxValue(int[] arrcounts, ref int index)
  120.         {
  121.             int maxcount = 0;
  122.             for (int i = 0; i < 10; i++)
  123.             {
  124.                 if (arrcounts[i] == -1)
  125.                 {
  126.                     continue;
  127.                 }
  128.                 if (maxcount < arrcounts[i])
  129.                 {
  130.                     maxcount = arrcounts[i];
  131.                     index = i;
  132.                 }
  133.             }
  134.  
  135.             arrcounts[index] = -1;
  136.             return maxcount;
  137.         }
  138.  
  139.         static void Main(string[] args)
  140.         {
  141.             // Сгенерировать массив инт чисел, длиной (99, 201), значения (-1, 10)
  142.             // Метод 1: найти среднее значение
  143.             // Метод 2: найти медиану
  144.             // Метод 3: для каждого числа вывести кол-во повторов sort (max, min)
  145.             // Метод 4: извлечь подмассив максимальной длины, все числа которого являются нечет
  146.  
  147.             // Объявляем переменные.
  148.             int N;
  149.             double average, median;
  150.  
  151.             N = rnd.Next(10, 20);
  152.             int[] arr = new int[N];
  153.  
  154.             // Генерируем массив
  155.             for (int i = 0; i < N; i++)
  156.             {
  157.                 arr[i] = rnd.Next(0, 10);
  158.             }
  159.  
  160.             // Вызовом методов находим ср знач и медиану.
  161.             average = MidValue(arr);
  162.             median = FindMedian(N, arr);
  163.            
  164.             // Нахождение и вывод массива простых чисел
  165.             int[] arrodds = FindMaxOdd(arr);
  166.             Console.WriteLine("Начальный массив: ");
  167.             foreach (var item in arr)
  168.             {
  169.                 Console.Write(item + " ");
  170.             }
  171.  
  172.             Console.WriteLine("\n");
  173.  
  174.             // Вывод промежуточных результатов
  175.             Console.WriteLine("Среднее значение: " + average);
  176.             Console.WriteLine("Медиана: " + median);
  177.  
  178.             Console.WriteLine("\n");
  179.  
  180.             Console.WriteLine("Максимальный нечетный массив: ");
  181.  
  182.             foreach (var item in arrodds)
  183.             {
  184.                 Console.Write(item + " ");
  185.             }
  186.  
  187.             TimesFound(arr);
  188.         }
  189.     }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement