отрицательные элементы парных столбцов переместить вверх
Необходимо в двумерном массиве переместить отрицательные элементы парных столбцов вверх, не меняя их порядок следования.
Пытаюсь понять принцип как это можно сделать:
Write("Введите ширину массива: ");
int N = int.Parse(ReadLine());
Write("Введите длинну массива: ");
int M = int.Parse(ReadLine());
Write("Введите диапазон массива: ");
Write("\n\tВведите минимальное число: ");
int A = int.Parse(ReadLine());
Write("\n\tВведите максимальное число: ");
int B = int.Parse(ReadLine());
int[,] arr = new int[M, N];
Random a = new Random();
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
arr[i,j] = a.Next(A, B);
}
}
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Write("\t" + arr[i,j]);
}
WriteLine();
}
int tmp = 0;
for (int i = 0; i < arr.GetLength(1); i++)
{
if (i % 2 == 0)
{
tmp = arr[0, i];
for (int j = 0; j < arr.GetLength(0) - 1; j++)
{
// if(j < 0)
{
arr[j, i] = arr[j + 1, i];
}
}
}
arr[arr.GetLength(0) - 1, i] = tmp;
}
Write("\n");
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Write("\t" + arr[i, j]);
}
WriteLine();
}
Ответы (1 шт):
Автор решения: Вячеслав
→ Ссылка
tmp = 0;
for (int j = 0; j < array.GetLength(1); j++) {
int k = 0;
for (int i = 0; i < array.GetLength(0); i++) {
if (i % 2 == 0 && i!=0) {
if (array[i, j] < 0) {
tmp = array[k, j];
array[k, j] = array[i, j];
array[i, j] = tmp;
k++;
}
}
}
}