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

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

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

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

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication8
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             const int m = 10, n = 5 , x = 20;
  13.             Random rnd = new Random();
  14.             int[,] A = new int[m, n];
  15.             int i, j, min, jMin, temp;
  16.             Console.WriteLine("Рандомная матрица");
  17.             for (i = 0; i < m; i++)//Выводим матрицу на консоль и одновременно заполняем ее
  18.             {
  19.                 for (j = 0; j < n; j++)
  20.                 {
  21.                     Console.Write("{0,4}", A[i, j] = rnd.Next(x));
  22.                 }
  23.                 Console.WriteLine();
  24.             }
  25.             for (i = 0; i < m; i++) //пербираем все строки
  26.             {
  27.                 min = int.MaxValue;
  28.                 jMin = 0;
  29.                 for (j = 0; j < n; j++) //ищем миним.эл. строки и его индекс
  30.                 {
  31.                     if (A[i, j] < min)
  32.                     {
  33.                         min = A[i, j];
  34.                         jMin = j;
  35.                     }
  36.                 }
  37. //реализация циклич.сдвига (rotate)
  38. //смещаем на одну позицию влево каждый элемент ровно стоко раз - какой индекс минимального
  39. //в итоге любой минимальный оказывается крайним слева.
  40.                 if (min % 2 == 0) //если же min четный то количество сдвигов влево увеличивает на 1
  41.                     jMin++;         //в итоге он оказывается крайним справа
  42.                 while (jMin>0)
  43.                 {
  44.                     temp = A[i, 0]; //значение 1-го элемента строки храним во врем.переменной
  45.                     for (j = 0; j < n-1; j++)
  46.                     {
  47.                         A[i, j] = A[i, j + 1]; //собственно здесь и происходит смешение значений
  48.                     }              //каждого элемента строки строки влево ровно jMin или jMin+1 раз
  49.                     jMin--;
  50.                     A[i, n-1] = temp;
  51.                 }  
  52.             }
  53.             Console.WriteLine("Результат:");
  54.             for (i = 0; i < m; i++)//Выводим результат
  55.             {
  56.                 for (j = 0; j < n; j++)
  57.                 {
  58.                     Console.Write("{0,4}", A[i, j]);
  59.                 }
  60.                 Console.WriteLine();
  61.             }
  62.             Console.ReadLine();
  63.         }
  64.     }
  65. }

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


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

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

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы