Циклический сдвиг строки матрицы в зависимости от чётности минимального элемента - C#

Узнай цену своей работы

Формулировка задачи:

12. Дана матрица А[m,n]. Если минимальный элемент строки матрицы четный, выполнить циклический сдвиг этой строки вправо, чтобы этот элемент оказался в последнем столбце. Иначе выполнить циклический сдвиг строки влево, чтобы этот элемент оказался в первом столбце. если можно с комментариями))

Решение задачи: «Циклический сдвиг строки матрицы в зависимости от чётности минимального элемента»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            const int m = 10, n = 5 , x = 20;
            Random rnd = new Random();
            int[,] A = new int[m, n];
            int i, j, min, jMin, temp;
            Console.WriteLine("Рандомная матрица");
            for (i = 0; i < m; i++)//Выводим матрицу на консоль и одновременно заполняем ее
            {
                for (j = 0; j < n; j++)
                {
                    Console.Write("{0,4}", A[i, j] = rnd.Next(x));
                }
                Console.WriteLine();
            }
            for (i = 0; i < m; i++) //пербираем все строки
            {
                min = int.MaxValue;
                jMin = 0;
                for (j = 0; j < n; j++) //ищем миним.эл. строки и его индекс
                {
                    if (A[i, j] < min)
                    {
                        min = A[i, j];
                        jMin = j;
                    }
                }
//реализация циклич.сдвига (rotate)
//смещаем на одну позицию влево каждый элемент ровно стоко раз - какой индекс минимального
//в итоге любой минимальный оказывается крайним слева.
                if (min % 2 == 0) //если же min четный то количество сдвигов влево увеличивает на 1
                    jMin++;         //в итоге он оказывается крайним справа
                while (jMin>0) 
                {
                    temp = A[i, 0]; //значение 1-го элемента строки храним во врем.переменной
                    for (j = 0; j < n-1; j++)
                    {
                        A[i, j] = A[i, j + 1]; //собственно здесь и происходит смешение значений 
                    }              //каждого элемента строки строки влево ровно jMin или jMin+1 раз
                    jMin--;
                    A[i, n-1] = temp;
                }   
            }
            Console.WriteLine("Результат:");
            for (i = 0; i < m; i++)//Выводим результат
            {
                for (j = 0; j < n; j++)
                {
                    Console.Write("{0,4}", A[i, j]);
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

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


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

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

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