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

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


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

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

7   голосов , оценка 4.857 из 5
Похожие ответы