Во всех последовательностях отрицательных чисел поменять местами элементы с максимальным и минимальным значениями - C#
Формулировка задачи:
Помогите плиз с заданием:
Размерность массива – 100, диапазон значений [-50,50]. Во всех последовательностях
отрицательных чисел поменять местами элементы с максимальным и минимальным
значениями.
Я вроде как ее написал, но она не совсем так как нужно работает. Помогите пожалуйста разобраться, где у меня ошибка, а то я совсем запутался(
static void Num6()
{
int[] array = new int[100];
Random rnd = new Random();
for (int i = 0; i < array.Length; i++)
array[i] = rnd.Next(-50, 50);
Console.Write("Массив: ");
foreach (int x in array)
Console.Write(x + " ");
Console.WriteLine();
bool f1 = false;
bool f2 = false;
int max = -555;
int min = -555;
int j = 0;
int count = 0;
for (int i = 0; i < array.Length - 1; i++)
{
if (array[i] < 0 && array[i + 1] < 0)
{
j = i;
count++;
f1 = true;
f2 = false;
if (max == -555)
max = array[i];
else if (max > array[i])
max = array[i];
if (min == -555)
min = array[i];
else if (min < array[i])
min = array[i];
}
else
f2 = true;
if (f1 && f2)
{
int k = j - count;
for (; k < j; k++)
{
if (array[k] == max)
array[k] = min;
if (array[k] == min)
array[k] = max;
}
min = -555;
max = -555;
j = 0;
count = 0;
f1 = false;
f2 = false;
}
}
Console.Write("Измененый массив: ");
foreach (int x in array)
Console.Write(x + " ");
Console.WriteLine();
}Решение задачи: «Во всех последовательностях отрицательных чисел поменять местами элементы с максимальным и минимальным значениями»
textual
Листинг программы
static void Main(string[] args)
{
int maxVal = 0;
int minVal = 0;
bool isAny = false;
int[] mas = new int[10]; //для теста взял 10, потом поменять на 100
Random rand = new Random(DateTime.Now.Millisecond);
for (int i = 0; i < mas.Length; i++)
{
mas[i] = rand.Next(-50, 51);
Console.Write(mas[i] + " ");
}
Console.WriteLine();
for (int i = 0; i < mas.Length; i++)
{
if (mas[i] < 0)
{
if (!isAny)
{
maxVal = i;
minVal = i;
isAny = true;
}
else
{
if (mas[i] >= mas[maxVal]) maxVal = i;
if (mas[i] < mas[minVal]) minVal = i;
}
}
}
if (isAny) Swap(ref mas[maxVal], ref mas[minVal]);
for (int i = 0; i < mas.Length; i++)
{
Console.Write(mas[i] + " ");
}
Console.ReadLine();
}
public static void Swap(ref int min, ref int max)
{
int buf = min;
min = max;
max = buf;
}