Сортировка по убыванию после минимального элемента массива - C#
Формулировка задачи:
Помогите доделать задание, 1-ю часть и нахождение минимального элемента сделал.
1. Найти сумму модулей элементов, которые имеют дробную часть меньше 0.5.
2. Сортировать элементы, расположенные после минимального элемента по убыванию значений элементов.
int n; bool f; double sum = 0, min = 0; do { Console.Write("Введите количество элементов: "); f = int.TryParse(Console.ReadLine(), out n); if (f == false) Console.WriteLine("Ошибка! Введено некорректное значение"); } while (!f); double[] arr = new double[n]; Random rnd = new Random(); for (int i = 0; i < arr.Length; i++) { double d = rnd.NextDouble() * (53.44 - (-10.34)) + (-10.34); arr[i] = Math.Round(d, 2); Console.WriteLine($"arr[{i}]={arr[i]}"); int k = (int)d; double drob = d - k; if (drob < 0.5) { sum = sum + Math.Abs(d); } } Console.WriteLine(); Console.WriteLine($"Сума = {sum:F2}"); Console.WriteLine(); for (int i = 0; i < arr.Length; i++) { if (min < arr[i]) { min = arr[i]; } } ... Console.WriteLine("После сортировки:"); for (int i = 0; i < arr.Length; i++) { Console.WriteLine($"arr[{i}]={arr[i]}"); } Console.ReadKey();
Решение задачи: «Сортировка по убыванию после минимального элемента массива»
textual
Листинг программы
using System; using System.Linq; using System.Collections.Generic; public class Program { public static void Main() { int n; while (!Int32.TryParse(Console.ReadLine(), out n)); List<double> lst = Enumerable.Repeat(new Random(), n).Select(r => r.NextDouble() * (53.44 + 10.34) - 10.34).ToList(); Console.WriteLine(String.Join(", ", lst)); Console.WriteLine(lst.Where(x => Math.Abs(x - Math.Truncate(x)) < 0.5).Sum(Math.Abs)); int uptoMin = lst.IndexOf(lst.Min()) + 1; Console.WriteLine(String.Join(", ", lst.Take(uptoMin).Concat(lst.Skip(uptoMin).OrderByDescending(x => x)))); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д