В матрице поменять местами столбец с номером N с тем, который содержит только отрицательные элементы - C#
Формулировка задачи:
Вот эта не понятная. Есть решение у кого?
Дана матрица размера MxN. Поменять местами столбец с номером N и первый из столбцов, содержащих только отрицательные элементы. Если требуемых столбцов нет, то вывести матрицу без изменений.
Решение задачи: «В матрице поменять местами столбец с номером N с тем, который содержит только отрицательные элементы»
textual
Листинг программы
class Program
{
static void Show(int[,] mas)
{
for (int i = 0; i < mas.GetLength(0); i++)
{
for (int j = 0; j < mas.GetLength(1); j++)
{
Console.Write(" " + mas[i, j] + " ");
}
Console.WriteLine();
}
}
static void Main()
{
Console.Write("Введите M: ");
int M = int.Parse(Console.ReadLine());
Console.Write("Введите N: ");
int N = int.Parse(Console.ReadLine());
int[,] array = new int[M, N];
Random random = new Random();
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
array[i, j] = random.Next(-9, 10);
}
}
Show(array);
int buf = -1;
for (int i = 0; i < N; i++)
{
int count = 0;
for (int j = 0; j < M; j++)
{
if (array[j, i] > 0)
{
break;
}
count++;
}
if (count == M)
{
buf = i;
break;
}
count = 0;
}
if (buf >= 0)
{
Console.Write("Введите столбец, который нужно поменять: ");
int K = int.Parse(Console.ReadLine());
if (K > N) throw new IndexOutOfRangeException();
int buf1 = 0;
for (int i = 0; i < M; i++)
{
buf1 = array[i, buf];
array[i, buf] = array[i, K];
array[i, K] = buf1;
}
Show(array);
}
Console.ReadLine();
}