123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- 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();
- }
- /// <summary>
- /// Клик кнопки, заполняющей массив
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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]}");
- }
- }
- /// <summary>
- /// Вставляет значение на определённый индекс в массиве. Самое последнее значение массива будет удалено
- /// </summary>
- /// <param name="SourceArray">Исходный массив</param>
- /// <param name="Value">Значение для вставки</param>
- /// <param name="InsertIndex">Позиция для вставки</param>
- /// <returns>Массив со вставленным элементом</returns>
- 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;
- }
-
- /// <summary>
- /// Обработчик кнопки вычисления ответа
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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]}");
- }
- }
- }
- }
|