Сортировка по убыванию после минимального элемента массива - 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))));
}
}