Нашел первый и максимальный элемент,но не могу понять как переставить элементы в обратном порядке - C#
Формулировка задачи:
Нужно переставить в обратном порядке элементы одномерного массива,
расположенные между первым минимальным и последним максимальным элементом
static void Main(string[] args) { int min = 0, max = 0, el = 0, mx = 0; int[] mass = new int[10]; Random a = new Random(); for (int i = 0; i < 10; i++) { mass[i] = a.Next(10, 50); } Console.WriteLine(); Console.Write("Исходный массив"); Console.WriteLine(); for (int i = 0; i < 10; i++) { Console.Write("{0,4}", mass[i]); } Console.WriteLine(); int p, l; for (int i = 0; i < 10; i++) { if (mass[i] > mass[0]) { max = mass[i]; { p = i; if (mass[i] < min) { min = mass[i]; l = i; mx = max; for (int g = l; g <= p / 2; g++) { } } } } Console.Write("Преобразованный массив"); Console.WriteLine(); for (int h = 0; h < 10; h++) { Console.Write("{0,4}", mass[i]); } Console.ReadKey(); } } } }
Решение задачи: «Нашел первый и максимальный элемент,но не могу понять как переставить элементы в обратном порядке»
textual
Листинг программы
using System; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { Random rnd = new Random(); int[] mass = Enumerable.Range(0, 10).Select(v => rnd.Next(10, 50)).ToArray(); Console.WriteLine("Исходный массив: " + String.Join(" ", mass)); int imin = mass.Select((v, i) => v == mass.Min() ? i + 1 : 0).OrderBy(v => v).Where(v => v != 0).First() - 1; //индекс первого минимального int imax = mass.Length - mass.Reverse().Select((v, i) => v == mass.Max() ? i + 1 : 0).OrderBy(v => v).Where(v => v != 0).First();//индекс последнего максимального if (imin < imax) { int[] rev = mass.Skip(imin + 1).Take(imax - imin - 1).Reverse().ToArray();//выделяем нужные элементы и инвертируем int[] before = mass.Where((v, i) => i <= imin).ToArray();//элементы до минимального (включая минимальный) int[] after = mass.Where((v, i) => i >= imax).ToArray();//элементы после максимального (включая максимальный) mass = before.Concat(rev).ToArray().Concat(after).ToArray();//объединяем Console.WriteLine("Результат: "+String.Join(" ", mass));//выводим } else Console.WriteLine("Минимальный стоит после максимального"); Console.ReadLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д