На c# в массиве a=(a1, а2, аn)все положительные элементы, стоящие перед минимальным положительным элементом, переслать в «хвост» массива

МААклерша МААклерша    1   30.04.2019 09:19    19

Ответы
лилия581 лилия581  21.12.2023 22:11
Добрый день! Конечно, я могу помочь с решением данной задачи.

Для начала, давайте разберем, что нам нужно сделать по шагам:

1. Создаем массив и заполняем его значениями. Например: int[] a = {4, -2, 7, 1, 3, -5, 2, 6};

2. Находим минимальный положительный элемент в массиве, чтобы определить, откуда начинать перенос. Для этого, создадим переменную minPositive и присвоим ей значение, которое гарантированно больше всех положительных элементов в массиве. Например: int minPositive = int.MaxValue;

3. Проходимся по всем элементам массива и находим минимальный положительный элемент. Если найденный элемент меньше значения minPositive, обновляем значение minPositive. Также, запоминаем индекс найденного элемента в переменной index. Например:

int index = -1;
for (int i = 0; i < a.Length; i++)
{
if (a[i] > 0 && a[i] < minPositive)
{
minPositive = a[i];
index = i;
}
}

4. Если индекс элемента, откуда начинается перенос (index), находится не в начале или конце массива, выполняем перенос элементов. Для этого создаем временный массив tempArray, куда будем складывать все положительные элементы, стоящие перед минимальным положительным элементом. Затем, переносим элементы из временного массива в хвост исходного массива. Например:

if (index > 0 && index < a.Length - 1)
{
int[] tempArray = new int[index];
for (int i = 0; i < index; i++)
{
tempArray[i] = a[i];
}

for (int i = 0; i < index; i++)
{
a[i] = a[i + index];
}

for (int i = 0; i < index; i++)
{
a[a.Length - index + i] = tempArray[i];
}
}

5. Выводим итоговый массив на экран:

for (int i = 0; i < a.Length; i++)
{
Console.Write(a[i] + " ");
}

Теперь давайте применим эти шаги к примеру, который я привел ранее:

int[] a = {4, -2, 7, 1, 3, -5, 2, 6};

1. Массив a = {4, -2, 7, 1, 3, -5, 2, 6};

2. minPositive = int.MaxValue;

3. Проходим по массиву:
a[0] = 4 > 0, но 4 не меньше чем minPositive (пока равно int.MaxValue)
a[1] = -2 не положительный
a[2] = 7 > 0, но 7 не меньше чем minPositive (пока равно int.MaxValue)
a[3] = 1 > 0 и 1 меньше чем minPositive (обновляем minPositive = 1 и index = 3)
a[4] = 3 > 0, но 3 не меньше чем minPositive (пока равно 1)
a[5] = -5 не положительный
a[6] = 2 > 0 и 2 меньше чем minPositive (обновляем minPositive = 2)

4. index = 3, выполняем перенос:
tempArray = {4, -2, 7}
a = {1, 3, -5, 2, 6, 1, 3, -5, 2, 6}

5. Выводим итоговый массив на экран: 1, 3, -5, 2, 6, 1, 3, -5, 2, 6

Надеюсь, что это решение помогло вам понять, как решить данную задачу. Если у вас возникнут еще вопросы, не стесняйтесь задавать.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика