На место минимального и максимального элементов поставить среднее значение - C#
Формулировка задачи:
Вечер добрый, помогите доделать код к задаче, половину сделал : нашёл минимальный, максимальный элемент и среднее значение элементов, а вот с перестановками элементов совсем не дружу...
На место минимального и максимального элементов поставить среднее значение. В
полученном массиве процедуру повторить. Средние и последний вариант массива являются результатом решения задачи.
int n;
Console.WriteLine("Введите размерность МАССИВА");
n = int.Parse(Console.ReadLine());
{
int[] mas = new int[n];
Random rand = new Random();
for (int i = 0; i < n; i++)
{
mas[i] = rand.Next(-21, 21);
}
for (int i = 0; i < n; ++i)
Console.Write("\t" + mas[i]);
Console.WriteLine();
int min = mas[0];
for (int i = 0; i < n; ++i)
if (mas[i] <= min)
//найдено минимальное значение
min = mas[i];
Console.WriteLine();
Console.Write("Минимальное значение массива:\t" + min);
int max = int.MinValue;
for (int i = 0; i < mas.Length; i++)
{
if (mas[i]>max)
{//найдено большее значение
max = mas[i];}
}
Console.WriteLine();
Console.WriteLine("Максимальное значение массива:\t" + max);
double sum = 0;
for (int i = 0; i < mas.Length; i++)
{sum += mas[i];}
Console.WriteLine("Среднее значение элементов массива " + sum / mas.Length);
}
Console.ReadKey();Решение задачи: «На место минимального и максимального элементов поставить среднее значение»
textual
Листинг программы
using System;
using System.Linq;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Введите размерность массива: ");
int n = int.Parse(Console.ReadLine());
Random rnd = new Random();
double[] mas = Enumerable.Range(0, n).Select(v => (double)rnd.Next(1, 20)).ToArray();
Console.Write($"Исходный массив: {String.Join(" ", mas)}\n");
for (int i = 0; i < mas.Length / 2; i++)
{
double ave = mas.Average();
mas = mas.Select(v => v == mas.Max() ? ave : v == mas.Min() ? ave : v).ToArray();
}
Console.Write($"Результат: {String.Join(" ", mas.Select(v => v.ToString("#.###")))}");
Console.ReadKey();
}
}
}