Переписать код обработки массива без использования стандартных функций - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет, дан код и надо реализовать поэлементную обработку массива, или же расписать стандартные функции
Листинг программы
  1. static int[] process(int[] mas)
  2. {
  3. int mS = Series2(mas).Max(s => s.Length);
  4. return Series2(mas)
  5. .SelectMany(s => s.Length == mS ? s.Concat(new[] { s[0] }) : s)
  6. .ToArray();
  7. }
Листинг программы
  1. static void pr (ref int [] a, out int [] b)
  2. {
  3. b = a.Distinct().ToArray();
  4. }
Всего 2 программы, со стандартными функциями я знаю как это происходит, а вот чтобы без них, пёс его знает, не знаю)

Решение задачи: «Переписать код обработки массива без использования стандартных функций»

textual
Листинг программы
  1. private static int Max<TSource>(IEnumerable<TSource> source, Func<TSource, int> selector)
  2. {
  3.     int max = int.MinValue;
  4.     foreach (TSource element in source)
  5.     {
  6.         max = Math.Max(max, selector(element));
  7.     }
  8.     return max;
  9. }
  10.  
  11. private static IEnumerable<TResult> SelectMany<TSource, TResult>(IEnumerable<IEnumerable<TSource>> source, Func<TSource, TResult> selector)
  12. {
  13.     foreach (IEnumerable<TSource> enumerable in source)
  14.     {
  15.         foreach (TSource element in enumerable)
  16.         {
  17.             yield return selector(element);
  18.         }
  19.     }
  20. }
  21.  
  22. private static TResult[] ToArray<TResult>(IEnumerable<TResult> source)
  23. {
  24.     TResult[] array = null;
  25.     var length = 0;
  26.     var collection = source as ICollection<TResult>;
  27.     if (collection != null)
  28.     {
  29.         length = collection.Count;
  30.         if (length > 0)
  31.         {
  32.             array = new TResult[length];
  33.             collection.CopyTo(array, 0);
  34.         }
  35.     }
  36.     else
  37.     {
  38.         foreach (TResult element in source)
  39.         {
  40.             if (array == null)
  41.                 array = new TResult[4];
  42.             else if (array.Length == length)
  43.             {
  44.                 var elementArray = new TResult[checked (length * 2)];
  45.                 Array.Copy(array, 0, elementArray, 0, length);
  46.                 array = elementArray;
  47.             }
  48.             array[length] = element;
  49.             ++length;
  50.         }
  51.     }
  52.  
  53.     if (length == 0)
  54.         return new TResult[0];
  55.     if (array.Length == length)
  56.         return array;
  57.     var elementArray2 = new TResult[length];
  58.     Array.Copy(array, 0, elementArray2, 0, length);
  59.     return elementArray2;
  60. }
  61.  
  62. private static IEnumerable<TResult> Distinct<TResult>(IEnumerable<TResult> source)
  63. {
  64.     var distincts = new List<TResult>();
  65.     foreach (TResult element in source)
  66.     {
  67.         if (!distincts.Contains(element))
  68.         {
  69.             distincts.Add(element);
  70.         }
  71.     }
  72.     return distincts;
  73. }

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


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

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

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы