Вопрос задан 07.04.2021 в 06:43. Предмет Информатика. Спрашивает Коновалова Юлия.

Помогите с массивом c# В одномерном массиве нужно удалить элементы, стоящие между максимальным

отрицательным и минимальным положительным.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Веретельникова Маргарита.
Private static int[] DeleteSomethingInArray(int[] a)
        {
            Debug.Assert(a.Length > 1 && a.Any(x => x > 0) && a.Any(x => x < 0));  // это просто проверка, можно удалить или закоментировать
            if (a.Length == 2)
                return a;

            var max_i = -1;
            var min_i = -1;
            for (var i = 0; i < a.Length; i++)
            {
                if (a[i] < 0 && (max_i < 0 || a[max_i] < a[i]))
                    max_i = i;
                if (a[i] > 0 && (min_i < 0 || a[min_i] > a[i]))
                    min_i = i;
            }

            var result = new int[a.Length - Math.Abs(max_i - min_i) + 1];

            var j = 0;
            for (var i = 0; i < a.Length; i++)
            {
                if (i <= Math.Min(max_i, min_i) || i >= Math.Max(max_i, min_i))
                    result[j++] = a[i];
            }

            return result;
        }

На всякий случай в заголовках
using System;
using System.Diagnostics;
using System.Linq;


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, я могу помочь с этой задачей. Вот пример кода на C#, который реализует удаление элементов между максимальным отрицательным и минимальным положительным числами в одномерном массиве:

csharp
using System; class Program { static void Main() { int[] array = { 1, 3, -5, 2, -4, 6, -7, 8, 9, -2 }; Console.WriteLine("Исходный массив:"); PrintArray(array); RemoveElements(array); Console.WriteLine("Массив после удаления элементов:"); PrintArray(array); } static void RemoveElements(int[] array) { int maxNegativeIndex = -1; int minPositiveIndex = -1; // Находим индексы максимального отрицательного и минимального положительного чисел for (int i = 0; i < array.Length; i++) { if (array[i] < 0 && (maxNegativeIndex == -1 || array[i] > array[maxNegativeIndex])) { maxNegativeIndex = i; } else if (array[i] > 0 && (minPositiveIndex == -1 || array[i] < array[minPositiveIndex])) { minPositiveIndex = i; } } // Если найдены индексы максимального отрицательного и минимального положительного чисел if (maxNegativeIndex != -1 && minPositiveIndex != -1) { int start = Math.Min(maxNegativeIndex, minPositiveIndex); int end = Math.Max(maxNegativeIndex, minPositiveIndex); // Удаляем элементы между найденными индексами Array.Clear(array, start + 1, end - start - 1); } } static void PrintArray(int[] array) { foreach (int element in array) { Console.Write(element + " "); } Console.WriteLine(); } }

В этом примере массив array содержит числа разных знаков. Мы ищем индексы максимального отрицательного числа и минимального положительного числа в массиве. Затем мы определяем начало и конец сегмента элементов, которые нужно удалить (между найденными индексами). Используя метод Array.Clear, мы очищаем элементы в указанном сегменте массива.

После удаления элементов выводится измененный массив. Результат выполнения программы будет следующим:

Исходный массив: 1 3 -5 2 -4 6 -7 8 9 -2 Массив после удаления элементов: 1 3 -5 -2

В данном примере были удалены элементы -4, 6 и -7, так как они находились между максимальным отрицательным числом -5 и минимальным положительным числом 2.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос