Top.Mail.Ru
Ответы

Программирование/C# решение задач

Дан одномерный массив. Сформировать другой одномерный массив из отрицательных элементов расположенных между максимальным и минимальным элементами исходного массива (Макс и мин числа ищет хорошо,но выводит почему то только их же ,в чем проблема? )

int count = 0;
int f = 1;
int amax = 0;
int amin = 0;
int imin = 0;
int imax = 0;
Console.Write("Введите количество чисел: ");
int s = int.Parse(Console.ReadLine());
int[] a = new int[s];
int[] b = new int[2 + count];
for (int i = 0; i < s; i++)
{
Console.Write($"Номер элемента с индексом {i}: ");
a[i] = int.Parse(Console.ReadLine());
}
for (int i = 0; i < s; i++)
{
if (a[i] > 0)
{
break;
}
}



amax = a[0];
amin = a[0];
for (int i = 0; i < s; i++)
{
if (a[i] > amax)
{
amax = a[i];
imax = i;
}
}
for (int i = 0; i < s; i++)
{
if (a[i] < amin)
{
amin = a[i];
imin = i;
}
}


Console.WriteLine(imax);
Console.WriteLine(imin);
Console.WriteLine(amax);
Console.WriteLine(amin);

for (int i = 0; i < s; i++)
{
Console.WriteLine("Цикл дошел");
if ((i > imax) && (i < imin) && (f < b.Length- 2))
{
count++;

b[f] = a[i];
++f;

}
}
b[0] = amax;
b[b.Length - 1] = amin;
for (int k = 0; k < b.Length; k++)
Console.WriteLine(b[k]);
Console.ReadLine();

По дате
По рейтингу
Аватар пользователя
Новичок

у второго массива размер 2 у тебя

123
 int count = 0;
\\...
int[] b = new int[2 + count]; 

на С#:

12345678910111213141516
 int[] arr = { -8, -21001, 5, -7, 9, 10, -2, 15, -4, 3, -8 }; 
Span<int> span = new(arr); 
 
int indexStart = span.IndexOf(arr.Min()); 
int indexEnd = span.IndexOf(arr.Max()); 
 
if(indexEnd < indexStart) 
{ 
    int temp = indexStart; 
    indexStart = indexEnd; 
    indexEnd = temp; 
} 
var arr2 = arr[(indexStart + 1)..(indexEnd)].Where(x => x < 0); 
Console.WriteLine(string.Join( ", " , arr2)); 
 
Console.ReadKey();