.NET 2.x Элементы находящиеся между максимальным и минимальным элементами массива занести в другой массив - C#
Формулировка задачи:
Ввести одномерный массив с клавиатуры и элементы находящиеся между максимальным и минимальным элементами массива занести в другой массив B и вывести его элементы на экран.
var
I, N: Integer;
iMax, iMin: Integer;
A: array[1..10] of real;
begin
write('Введите количество элементов: '); readLN(N);
writeLN('Введите элементы массива: ');
for I := 1 TO N DO
read(A[I]);
iMax := 1;
for I := 1 TO N DO
if A[I] > A[iMax] then
iMax := I;
iMin := 1;
for I := 1 to N do
if A[I] < A[iMin] then
iMin := I;
WriteLn('Между максимальным и минимальным находятся:');
for I := Min(iMin, iMax)+1 to Max(iMin, iMax)-1 do
Write(A[I], ' ');
WriteLn;
end.
подскажите как создать массив с элементами входящим в промежуток от min и max
using System;
namespace mass
{
class MainClass
{
public static void Main(string[] args)
{
Console.Write("Длина массива : ");
int max = int.MinValue, min = int.MaxValue;
int minI = 0, maxI = 0, val = 0;
int[] arr = new int[Int32.Parse(Console.ReadLine())];
for (int i = 0; i < arr.Length; i++)
{
Console.Write("элемент #{0} >> ", i + 1);
arr[i] = Int32.Parse(Console.ReadLine());
}
Console.WriteLine("Оригинальный массив : ");
foreach (int n in arr)
Console.Write(n + " ");
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] > max)
{
max = arr[i];
maxI = i;
}
if (arr[i] < min)
{
min = arr[i];
minI = i;
}
}
Console.WriteLine("press any key...\n");
Console.ReadLine();
}
}
}
доработал вроде бы должно работать
using System;
namespace mass
{
class MainClass
{
public static void Main(string[] args)
{
Console.Write("Длина массива : ");
int max = int.MinValue, min = int.MaxValue;
int minI = 0, maxI = 0, val = 0;
int[] arr = new int[Int32.Parse(Console.ReadLine())];
for (int i = 0; i < arr.Length; i++)
{
Console.Write("элемент #{0} >> ", i + 1);
arr[i] = Int32.Parse(Console.ReadLine());
}
Console.WriteLine("Оригинальный массив : ");
foreach (int n in arr)
Console.Write(n + " ");
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] > max)
{
max = arr[i];
maxI = i;
}
if (arr[i] < min)
{
min = arr[i];
minI = i;
}
}
Console.WriteLine("\nЭлементы между min и max : ");
for (int i = 0, l = Math.Min(minI, maxI), r = val = Math.Max(minI, maxI); i < arr.Length; i++)
{
if (i > l && i < r)
//Console.Write(arr[val--] + " ");
Console.Write(arr[i] + " ");
}
Console.WriteLine("press any key...\n");
Console.ReadLine();
}
}
}Решение задачи: «.NET 2.x Элементы находящиеся между максимальным и минимальным элементами массива занести в другой массив»
textual
Листинг программы
int[] arr = { 1,2,9,4,5,6,0 };
int Max = arr.Max(); int Min = arr.Min();
Max = (from u in (arr.Select((e, i) => new { Value = e, Index = i }))//находим индекс максимального
where u.Value == Max
select u.Index).Single();
Min = (from u in (arr.Select((e, i) => new { Value = e, Index = i }))//находим индекс минимального
where u.Value == Min
select u.Index).Single();
if (Min > Max) { int k = Min; Min = Max; Max = k; }; //расставляем индексы по возрастанию
int[] Res = arr.Skip(Min+1).Take(Max - Min -1).ToArray();