using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ArrayForms
{
public partial class MainForm : Form
{
private int[] Numbers = new int[15];
public MainForm()
{
InitializeComponent();
}
///
/// Клик кнопки, заполняющей массив
///
///
///
private void btnFill_Click(object sender, EventArgs e)
{
var Rng = new Random();
// Заполняем массив случайными числами, заодно добавляем их в lbBefore
lbBefore.Items.Clear();
for (int i = 0; i < 15; i++)
{
Numbers[i] = Rng.Next(-50, 50);
lbBefore.Items.Add($"Numbers[{i}] = {Numbers[i]}");
}
}
///
/// Вставляет значение на определённый индекс в массиве. Самое последнее значение массива будет удалено
///
/// Исходный массив
/// Значение для вставки
/// Позиция для вставки
/// Массив со вставленным элементом
private int[] InsertValueToArray(int[] SourceArray, int Value, int InsertIndex)
{
// Копируем массив
var NewArray = new int[15];
Array.Copy(SourceArray, NewArray, 15);
// Сместить все элементы массива на их индекс + 1 чтобы освободить место
for (int i = NewArray.Length - 1; i >= InsertIndex; i--)
{
NewArray[i] = NewArray[i - 1];
}
// Заменить освободившийся индекс
NewArray[InsertIndex] = Value;
return NewArray;
}
///
/// Обработчик кнопки вычисления ответа
///
///
///
private void btnMove_Click(object sender, EventArgs e)
{
if (lbBefore.Items.Count == 0)
{
MessageBox.Show("Сначала заполните массив!");
return;
}
// Находим последний положительный элемент
int LastPositive = -1;
for (int i = 14; i >= 0; i--)
{
if (Numbers[i] > 0)
{
LastPositive = Numbers[i];
break;
}
}
/* Если положительный элемент был найден, то и LastPositive должен стать положительным
* Поэтому, если LastPositive отрицательный, положительных элементов в массиве не было найдено, т.к.
* LastPositive по умолчанию отрицательный и не был заменён положительным */
if (LastPositive < 0)
{
MessageBox.Show("В массиве не обнаружено положительных чисел");
return;
}
// Вставляем LastPositive перед 6-ым элементом
var NewArray = InsertValueToArray(Numbers, LastPositive, 6);
// Заполняем lbAfter
lbAfter.Items.Clear();
for (int i = 0; i < 15; i++)
{
lbAfter.Items.Add($"NewArray[{i}] = {NewArray[i]}");
}
}
}
}