Во всех последовательностях отрицательных чисел поменять местами элементы с максимальным и минимальным значениями - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д