Расположить столбцы матрицы по возрастанию сумм модулей их отрицательных нечетных элементов - C#
Формулировка задачи:
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик. Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент. Напишите пожалуйста.
Решение задачи: «Расположить столбцы матрицы по возрастанию сумм модулей их отрицательных нечетных элементов»
textual
Листинг программы
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
Console.WriteLine("Введите размерность матрицы");
int n = int.Parse(Console.ReadLine());
int[,] massiv = new int[n, n];
int i, j;
Console.WriteLine("Заполните матрицу");
for ( i = 0; i < n; i++)
{
for ( j = 0; j < n; j++)
{
Console.Write("Введите элемент [{0},{1}]: ",i,j);
massiv[i,j] = int.Parse(Console.ReadLine());
}
}
Console.WriteLine("Исходная матрица");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
Console.Write(" {0} ", massiv[i, j]);
}
Console.WriteLine();
}
int flag = 1;
while (flag == 1)
{
flag = 0;
for (i = 0; i < n-1 ; i++)
{
double sum1 = 0, sum2 = 0;
for (j = 0; j < n ; j++)
{
if (massiv[j, i] < 0 && massiv[j, i] % 2 != 0)
{
sum1 += Math.Abs(massiv[j, i]);
}
if (massiv[j, i + 1] < 0 && massiv[j, i + 1] % 2 != 0)
{
sum2 += Math.Abs(massiv[j, i + 1]);
}
}
if (sum1 > sum2)
{
for (j = 0; j < n; j++)
{
int tmp = massiv[j, i];
massiv[j, i] = massiv[j, i+1 ];
massiv[j,i+1] = tmp;
}
flag = 1;
}
}
}
Console.WriteLine("Преобразованная матрица");
for ( i = 0; i < n; i++)
{
for ( j = 0; j < n; j++)
{
Console.Write(" {0} ",massiv[i,j]);
}
Console.WriteLine();
}
for (i = 0; i < n; i++)
{
double sum = 0;
for (j = 0; j < n; j++)
{
if (massiv[j, i] < 0)
{
for (j = 0; j < n; j++)
{
sum += massiv[j, i];
}
}
}
Console.WriteLine("Сумма {0}", sum);
}
Console.ReadKey();
}
}
}