using System;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace Praktika
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[,] array2D;
int[] array;
public static int flag = 0;
string result;
int len;
private void ButtonOne_Click(object sender, EventArgs e)
{
//ввод для строк
if (arrayTextBox.Text.Length > 0 && textBoxLen.Text.Length >5 )
{
Vvod();
return;
}
if (textBoxLen.Text == null)
{
MessageBox.Show("Не введена длина массива");
return;
}
if (string.IsNullOrEmpty(textBoxMin.Text) || string.IsNullOrEmpty(textBoxMax.Text))
{
MessageBox.Show("Пожалуйста, введите все необходимые данные для создания массива.");
return;
}
//выводит массив с большим размером
len = Convert.ToInt32(textBoxLen.Text);
array = new int[len * 2];
Random random = new Random();
for (int i = 0; i < len; i++)
{
array[i] = random.Next(Convert.ToInt32(textBoxMin.Text), Convert.ToInt32(textBoxMax.Text));
}
//выводит массив избавляю от 0
string str = ""; for (int i = 0; i < len; i++)
{
str += array[i].ToString();
str += " ";
}
arrayTextBox.Text = str;
//выводит обычный массив
/*len = Convert.ToInt32(textBoxLen.Text);
array = new int[len ];
Random random = new Random();
for (int i = 0; i < len; i++)
{
array[i] = random.Next(Convert.ToInt32(textBoxMin.Text), Convert.ToInt32(textBoxMax.Text));
}*/
//arrayTextBox.Text = string.Join(", ", array);
}
private void Vvod()
{
string[] mas = arrayTextBox.Text.Split(' ');
len = mas.Length;
array = new int[len * 2];
for (int i = 0; i < len; i++)
{
array[i] = Convert.ToInt32(mas[i]);
}
}
private void ButtonTwo_Click(object sender, EventArgs e)
{
if (arrayTextBox.Text.Length > 0 && textBoxLen.Text.Length > 5)
{
Vvod2();
return;
}
if (textBoxLen.Text == null)
{
MessageBox.Show("Не введена длина массива");
return;
}
if (string.IsNullOrEmpty(textBoxMin.Text) || string.IsNullOrEmpty(textBoxMax.Text))
{
MessageBox.Show("Пожалуйста, введите все необходимые данные для создания массива.");
return;
}
len = Convert.ToInt32(textBoxLen.Text);
array2D = new int[len * 2, len * 2];
Random random = new Random();
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
array2D[i, j] = random.Next(Convert.ToInt32(textBoxMin.Text), Convert.ToInt32(textBoxMax.Text));
}
}
// Вывод двумерного массива в текстовое поле
string str = "";
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
str += array2D[i, j].ToString();
str += " ";
}
str += "\n";
}
arrayTextBox.Text = str;
/*StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
sb.Append(array2D[i, j] + " ");
}
sb.AppendLine();
}
arrayTextBox.Text = sb.ToString();*/
}
private void Vvod2()
{
string[] mas = arrayTextBox.Text.Split(' ', '\n');
len = Convert.ToInt32(Math.Sqrt(mas.Length));
array2D = new int[len * 2, len * 2];
int c = 0;
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
array2D[i, j] = Convert.ToInt32(mas[c++]);
}
}
}
private void Button1_Click(object sender, EventArgs e)
{
//Знак значений всех элементов серии одинаковы. минимальная серия
int[] array = Array.ConvertAll(arrayTextBox.Text.Split(','), int.Parse);
int minLength = 999;
int seriesStartIndex = 0;
int seriesLength = 0;
int i = 1;
int currentLength = 1;
for (; i < array.Length; i++)
{
if (array[i] < 0 && array[i - 1] < 0 || array[i] >= 0 && array[i - 1] >= 0)
{
currentLength++;
}
else
{
// Если серия закончилась
if (currentLength < minLength && currentLength >= 2)
{
minLength = currentLength;
seriesStartIndex = i - currentLength; // Начинаю с предыдущего элемента
seriesLength = currentLength;
}
currentLength = 1;
}
}
//последняя серия
if (currentLength < minLength && currentLength >= 2)
{
minLength = currentLength;
seriesStartIndex = i - currentLength; // Начинаю с предыдущего элемента
seriesLength = currentLength;
}
MessageBox.Show($"Серия с минимальной длиной начинается с позиции {seriesStartIndex} и имеет длину {seriesLength}");
flag = 1;
result = "Серия с минимальной длиной начинается с позиции " + seriesStartIndex + " и имеет длину " + seriesLength;
}
private void Button9_Click(object sender, EventArgs e)
{
if (flag == 1)
{
richTextBox1.Text = "Дан целочисленный одномерный массив размера N. Серия – это" +
"последовательность элементов массива, идущих друг за другом. Знаки" +
"значений всех элементов серии одинаковы(все положительные или все" +
"отрицательные). Серия должна содержать минимум 2 элемента.Длина" +
"серии – количество элементов в серии. Найти серию с минимальной" +
"длиной.Вывести с какой позиции начинается серия и ее длину.";
}
else if (flag == 2)
{
richTextBox1.Text = "7. Дан целочисленный одномерный массив размера N. Переставить в\r\nобратном порядке элементы массива, расположенные между\r\nнаибольшим четным и наименьшим нечетным";
}
else if (flag == 3)
{
richTextBox1.Text = "8. Дан целочисленный одномерный массив размера N. Вставить 3 после\r\nкаждого нечетного элемента массива (нечетный по значению, а не по\r\nпорядковому номеру).\r\n\r\n";
}
else if (flag == 4)
{
richTextBox1.Text = "8. Дан целочисленный одномерный массив размера N. Удалить из массива\r\nвсе нечетные элементы (нечетный по значению, а не по порядковому\r\nномеру).\r\n";
}
else if (flag == 5)
{
richTextBox1.Text = "8. Дан целочисленный двумерный массив размера N*N. Добавить в массив\r\nстроку 0 после каждой строки, в которой есть хотя бы один элемент,\r\nменьший по модулю среднего арифметического элементов массива.";
}
else if (flag == 6)
{
richTextBox1.Text = "8. Дан целочисленный двумерный массив размера N*N. Упорядочить\r\nэлементы в матрице по возрастанию (справа налево, снизу-вверх)";
}
else
{
MessageBox.Show("Пожалуйста, выберите задание");
}
}
///
/// результат
///
///
///
private void button10_Click(object sender, EventArgs e)
{
richTextBox1.Text = result;
}
private void Button2_Click(object sender, EventArgs e)
{
//Переставить в обратном порядке элементы между наибольшим четным и наименьшим нечетным
int[] array = Array.ConvertAll(arrayTextBox.Text.Split(','), int.Parse);
int Min = int.MaxValue, minIndex = -1, Max = int.MinValue, maxIndex = -1;
for (int i = 0; i < array.Length; i++)
{
if (array[i] > Max && array[i] % 2 == 0)
{
Max = array[i];
maxIndex = i;
}
if (array[i] < Min && array[i] % 2 != 0)
{
Min = array[i];
minIndex = i;
}
}
if (maxIndex != -1 && minIndex != -1)
{
int begin = Math.Min(minIndex, maxIndex) + 1, end = Math.Max(minIndex, maxIndex) - 1;
for (; begin < end; begin++, end--)
{
int tmp = array[begin];
array[begin] = array[end];
array[end] = tmp;
}
}
else
{
MessageBox.Show("Нет четного или нечетного элемента");
return;
}
/*int begin = Math.Min(minIndex, maxIndex) + 1, end = Math.Max(minIndex, maxIndex) - 1;
for (; begin < end; begin++, end--)
{
int tmp = array[begin];
array[begin] = array[end];
array[end] = tmp;
}*/
result = string.Join(", ", array);
flag = 2;
}
private void Button3_Click(object sender, EventArgs e)
{
// Вставить 1 после каждого положительного элемента массива.
//int[] array = Array.ConvertAll(arrayTextBox.Text.Split(','), int.Parse); // не для строк
/*for (int i = 0; i < len; i++)
{
if (array[i] >= 0 )
{
//Array.Resize(ref array, array.Length + 1); // Увеличиваем размер массива на 1
//len++;
for (int j = len - 1; j > i + 1; j--) // Сдвигаем все элементы после текущего на 1 позицию вправо
{
array[j] = array[j - 1];
}
array[i + 1] = 1; // Вставляем число 1 после текущего элемента
i++; // Пропускаем следующую итерацию цикла, чтобы не обрабатывать вставленное число 2
}
}*/
//int n = array.Length;
int count = len;
int i = 0;
for (; i < count; i++)
{
if (array[i] % 2 != 0)
{
for (int j = count; j > i; j--)
{
array[j] = array[j - 1];
}
array[i + 1] = 3;
count++;
i++;
}
}
string str = ""; for (i = 0; i < count; i++)
{
str += array[i].ToString();
str += " ";
}
result = str;
//result = string.Join(", ", array);
/*for (int i = n - 1; i >= 0; i--)
{
if (array[i] > 0)
{
for (int j = n - 1; j > i + 1; j--)
{
array[j] = array[j - 1];
}
array[i + 1] = 1;
len++;
}
}*/
/*int k = 0;
for(int i = 0; i < array.Length; i++)
{
if (array[i] >= 0)
{
k++;
}
}*/ //посчитать сколько реальных элементов
// Создаю новый массив с увеличенным размером
/*int[] newArray = new int[array.Length ];
// Счетчик для нового массива
int j = 0;
// Прохожу по исходному массиву
for (int i = 0; i < array.Length; i++)
{
// Копирую элемент
newArray[j] = array[i];
j++;
// Если элемент неотрицательный, вставляю 1
if (array[i] >= 0)
{
newArray[j] = 1; // Вставляю значение
j++;
}
}
// Обновляю исходный массив
array = newArray;*/
//result = string.Join(", ", array);
flag = 3;
}
private void Button4_Click(object sender, EventArgs e)
{
//Удалить из массива все положительные элементы.
//int[] array = Array.ConvertAll(arrayTextBox.Text.Split(','), int.Parse);
/*for (int i = 0; i < array.Length; i++)
{
if (array[i] > 0)
{
// Увеличиваем размер массива на 1
for (int j = i; j < array.Length - 1; j++) // Сдвигаем все элементы после текущего на 1 позицию вправо
{
array[j] = array[j + 1];
}
Array.Resize(ref array, array.Length - 1);
i--;
}
}
result = string.Join(", ", array);*/
int count = len;
int i = 0;
for (; i < count; i++)
{
if (array[i] % 2 != 0)
{
for (int j = i; j < count ; j++)
{
array[j] = array[j + 1];
}
count--;
i--;
if (count == 0)
{
result = "Нет элементов";
return;
}
}
}
string str = " "; for (i = 0; i < count; i++)
{
str += array[i].ToString();
str += " ";
}
result = str;
flag = 4;
}
private void Button5_Click(object sender, EventArgs e)
{
/*int s = 0;
float ar = 0;
for (int j = 0; j < columns; j++)
{
for (int i = 0; i < rows; i++)
{
if (array2D[i, j] >= 0)
{
s += array2D[i, j];
}
}
}
ar = s / rows;
for (int j = 0; j < columns; j++)
{
for (int i = 0; i < rows; i++)
{
if (array2D[i,j] > ar)
{
for (int k = columns; k > j; k--)
{
for (int p = 0; p < rows; p++)
{
array2D[p, k] = 0;
}
}
columns++;
j++;
break;
}
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
sb.Append(array2D[i, j] + " ");
}
sb.AppendLine();
}
richTextBox1.Text = sb.ToString();
//richTextBox1.Text = array2D.ToString();
//result = string.Join(" ", array2D);*/
int s = 0;
double ar = 0;
int len2 = len;
for (int j = 0; j < len2; j++)
{
for (int i = 0; i < len; i++)
{
if (array2D[i, j] < 0 )
{
s += array2D[i, j];
}
}
}
ar = (double)s / (len * len2);
//задание 5
for (int j = 0; j < len2; j++)
{
for (int i = 0; i < len; i++)
{
if (Math.Abs(array2D[i, j]) > ar && array2D[i,j] != 0)
{
for (int k = len2; k > j; k--)
{
for (int p = 0; p < len; p++)
{
array2D[p, k] = array2D[p, k - 1];
}
}
for (int p = 0; p < len; p++)
{
array2D[p, j + 1] = 0;
}
len2++;
j++;
}
}
}
// Вывод результата
string str = "";
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len2; j++)
{
str += array2D[i, j].ToString();
str += " ";
}
str += "\n";
}
result = str;
flag = 5;
//задание 6
/*int s =0;
double ar ;
int len2 = len;
for (int j = 0; j < len2; j++)
{
for (int i = 0; i < len; i++)
{
s += array2D[i, j];
}
}
ar = (double)s / (len * len2);
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len2; j++)
{
if (Math.Abs(array2D[i, j]) < ar)
{
for (int k = len; k > i; k--)
{
for (int p = 0; p < len2; p++)
{
array2D[k, p] = array2D[k - 1, p];
}
}
for (int p = 0; p < len2; p++)
{
array2D[i + 1, p] = 0;
}
len++;
i++;
break;
}
}
}
// Вывод результата
string str = "";
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len2; j++)
{
str += array2D[i, j].ToString();
str += " ";
}
str += "\n";
}
result = str;
flag = 5;*/
/*StringBuilder sbResult = new StringBuilder();
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
sbResult.Append(array2D[i, j] + " ");
}
sbResult.AppendLine();
}
richTextBox1.Text = sbResult.ToString();*/
// Вставляем столбцы с нулями
/*int insertCount = 0; // Счетчик вставленных столбцов
for (int j = 0; j < len2; j++)
{
for (int i = 0; i < len; i++)
{
if (array2D[i, j] > ar)
{
// Сдвигаем элементы массива вправо
for (int k = len2 - 1; k > j + insertCount; k--)
{
for (int p = 0; p < len; p++)
{
array2D[p, k] = array2D[p, k - 1];
}
}
// Вставляем столбец с нулями
for (int p = 0; p < len; p++)
{
array2D[p, j + insertCount] = 0;
}
insertCount++; // Увеличиваем счетчик вставленных столбцов
break;
}
}
}*/
}
private void Button6_Click(object sender, EventArgs e)
{
/*for (int i = 0; i < len; i++)
{
//сверху вниз
//SortLP(array2D, i);
//SortSN(array2D, i);
for (int j = 0; j < len; j++)
{
for (int k = 0; k < len; k++)
{
if (array2D[i, k] < array2D[i, k + 1])
{
int temp = array2D[i, k];
array2D[i, k] = array2D[i, k + 1];
array2D[i, k + 1] = temp;
}
}
for (int k = 0; k < len; k++)
{
if (array2D[k, 0] < array2D[k + 1, r])
{
int temp = array2D[k, r];
array2D[k, r] = array2D[k + 1, r];
array2D[k + 1, r] = temp;
}
}
}
}*/
/*for (int i = 0; i < len*len; i++)
{
// Сортировка строки слева направо
for (int row = 0; row < len; row++)
{
for (int k = 0; k < len - 1; k++)
{
if (array2D[row, k] < array2D[row, k + 1])
{
int temp = array2D[row, k];
array2D[row, k] = array2D[row, k + 1];
array2D[row, k + 1] = temp;
}
}
}
// Сортировка столбца сверху вниз
for (int col = 0; col < len ; col++)
{
for (int k = 0; k < len ; k++)
{
if (array2D[k, col] < array2D[k + 1, col])
{
int temp = array2D[k, col];
array2D[k, col] = array2D[k + 1, col];
array2D[k + 1, col] = temp;
}
}
}
}*/
//решение правильное
/*for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
for (int x = 0; x < len; x++)
{
for (int y = 0; y < len; y++)
{
if (array2D[i, j] > array2D[x, y])
{
int zam = array2D[i, j];
array2D[i, j] = array2D[x, y];
array2D[x, y] = zam;
}
}
}
}
}*/
//справо налево, снизу - вверх
for (int i = len - 1; i >= 0; i--) // Идём с конца по строкам
{
for (int j = len - 1; j >= 0; j--) // Идём с конца по столбцам
{
for (int x = len - 1; x >= 0; x--)
{
for (int y = len - 1; y >= 0; y--)
{
if (array2D[i, j] < array2D[x, y])
{
int zam = array2D[i, j];
array2D[i, j] = array2D[x, y];
array2D[x, y] = zam;
}
}
}
}
}
/*//слева на право
for (int k = 0; k < len; k++)
{
if (array2D[0, k] < array2D[0, k + 1])
{
int temp = array2D[0, k];
array2D[0, k] = array2D[0, k + 1];
array2D[0, k + 1] = temp;
}
}
//сверху вниз
for (int k = 0; k < len; k++)
{
if (array2D[k, 0] < array2D[k + 1, 0])
{
int temp = array2D[k, 0];
array2D[k, 0] = array2D[k + 1, 0];
array2D[k + 1, 0] = temp;
}
}*/
// Вывод результата
string str = "";
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
str += array2D[i, j].ToString();
str += " ";
}
str += "\n";
}
result = str;
flag = 6;
}
public void SortLP(int[,] arr,int r)
{
//слева на право
for (int i = 0; i < len; i++)
{
for (int k = 0; k < len; k++)
{
if (array2D[r, k] < array2D[r, k + 1])
{
int temp = array2D[r, k];
array2D[r, k] = array2D[r, k + 1];
array2D[r, k + 1] = temp;
}
}
}
}
public void SortSN(int[,] arr, int r)
{
//сВЕРХУ ВНИЗ
for (int i = 0; i < len; i++)
{
for (int k = 0; k < len; k++)
{
if (array2D[k, r] < array2D[k + 1, r])
{
int temp = array2D[k, r];
array2D[k, r] = array2D[k + 1, r];
array2D[k + 1, r] = temp;
}
}
}
}
}
}