Расположить столбцы матрицы по возрастанию сумм модулей их отрицательных нечетных элементов - 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();
        } 
    } 
 
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы