Переставить в каждом столбце прямоугольной матрицы все отрицательные элементы в конец столбца - C#
Формулировка задачи:
Переставить в каждом столбце прямоугольной матрицы все отрицательные элементы в конец столбца. Распечатать часть полученной матрицы, состоящую из n первых строк, не имеющих отрицательных элементов.
Решение задачи: «Переставить в каждом столбце прямоугольной матрицы все отрицательные элементы в конец столбца»
textual
Листинг программы
using System; namespace ConsoleApplication1 { class Program { /// <summary> /// Вывод матрицы на печать. /// </summary> static void PrintMatrix(double[,] a) { for (int i = 0; i < a.GetLength(0); ++i) { for (int j = 0; j < a.GetLength(1); ++j) { Console.Write("{0,3} ", a[i, j]); } Console.WriteLine(); } } /// <summary> /// Перестановка элементов. /// </summary> static void Swap<T>(ref T lhs, ref T rhs) { T temp; temp = lhs; lhs = rhs; rhs = temp; } static void Main(string[] args) { double[,] a = { { -1, 3, -4, -7}, { 4, 5, 9, 4}, { 5, -7, -8, 3} }; Console.WriteLine("Исходная матрица: "); PrintMatrix(a); // // Формируем матрицу с переставленными элементами. // for (int j = 0; j < a.GetLength(1); ++j) { int rowEnd = a.GetLength(0) - 1; for (int i = 0; i <= rowEnd;) { if (a[i, j] < 0) { Swap(ref a[i, j], ref a[rowEnd, j]); rowEnd--; } else { i++; } } } Console.WriteLine(); Console.WriteLine("Матрица с переставленными элементами: "); PrintMatrix(a); // // Определяем число строк с неотрицательными элементами и выводим. // int nonNegativeRows = 0; bool negativeOccur = false; for (int i = 0; i < a.GetLength(0); ++i) { for (int j = 0; j < a.GetLength(1); ++j) { if (a[i, j] < 0) { negativeOccur = true; break; } } if (negativeOccur) break; nonNegativeRows++; } Console.WriteLine(); Console.WriteLine("Часть строк матрицы с неотрицательными элементами: "); for (int i = 0; i < nonNegativeRows; ++i) { for (int j = 0; j < a.GetLength(1); ++j) { Console.Write("{0,3} ", a[i, j]); } Console.WriteLine(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д