Переписать код обработки массива без использования стандартных функций - C#
Формулировка задачи:
Всем привет, дан код и надо реализовать поэлементную обработку массива, или же расписать стандартные функции
Всего 2 программы, со стандартными функциями я знаю как это происходит, а вот чтобы без них, пёс его знает, не знаю)
Листинг программы
- static int[] process(int[] mas)
- {
- int mS = Series2(mas).Max(s => s.Length);
- return Series2(mas)
- .SelectMany(s => s.Length == mS ? s.Concat(new[] { s[0] }) : s)
- .ToArray();
- }
Листинг программы
- static void pr (ref int [] a, out int [] b)
- {
- b = a.Distinct().ToArray();
- }
Решение задачи: «Переписать код обработки массива без использования стандартных функций»
textual
Листинг программы
- private static int Max<TSource>(IEnumerable<TSource> source, Func<TSource, int> selector)
- {
- int max = int.MinValue;
- foreach (TSource element in source)
- {
- max = Math.Max(max, selector(element));
- }
- return max;
- }
- private static IEnumerable<TResult> SelectMany<TSource, TResult>(IEnumerable<IEnumerable<TSource>> source, Func<TSource, TResult> selector)
- {
- foreach (IEnumerable<TSource> enumerable in source)
- {
- foreach (TSource element in enumerable)
- {
- yield return selector(element);
- }
- }
- }
- private static TResult[] ToArray<TResult>(IEnumerable<TResult> source)
- {
- TResult[] array = null;
- var length = 0;
- var collection = source as ICollection<TResult>;
- if (collection != null)
- {
- length = collection.Count;
- if (length > 0)
- {
- array = new TResult[length];
- collection.CopyTo(array, 0);
- }
- }
- else
- {
- foreach (TResult element in source)
- {
- if (array == null)
- array = new TResult[4];
- else if (array.Length == length)
- {
- var elementArray = new TResult[checked (length * 2)];
- Array.Copy(array, 0, elementArray, 0, length);
- array = elementArray;
- }
- array[length] = element;
- ++length;
- }
- }
- if (length == 0)
- return new TResult[0];
- if (array.Length == length)
- return array;
- var elementArray2 = new TResult[length];
- Array.Copy(array, 0, elementArray2, 0, length);
- return elementArray2;
- }
- private static IEnumerable<TResult> Distinct<TResult>(IEnumerable<TResult> source)
- {
- var distincts = new List<TResult>();
- foreach (TResult element in source)
- {
- if (!distincts.Contains(element))
- {
- distincts.Add(element);
- }
- }
- return distincts;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д