Advertisement
braveheart1989

MatrixOperator

Jun 11th, 2016
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.29 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. public class MatrixOperator1
  6. {
  7.     #region  ReadMatrix
  8.     private static void ReadMatrix(int rows, int[][] matrix)
  9.     {
  10.         for (int row = 0; row < rows; row++)
  11.         {
  12.             matrix[row] = Console.ReadLine().Split().Select(int.Parse).ToArray();
  13.         }
  14.     }
  15.     #endregion
  16.     #region PrintMatrix
  17.     private static void PrintMatrix(int rows, int[][] matrix)
  18.     {
  19.         for (int row = 0; row < rows; row++)
  20.         {
  21.             Console.WriteLine(string.Join(" ", matrix[row]));
  22.         }
  23.     }
  24.     #endregion
  25.     static void Main()
  26.     {
  27.         int rows = int.Parse(Console.ReadLine());
  28.         int[][] matrix = new int[rows][];
  29.         ReadMatrix(rows, matrix);
  30.         while (true)
  31.         {
  32.             string[] inputCommands = Console.ReadLine().Split().ToArray();
  33.             #region StopProgram
  34.             if (inputCommands[0] == "end")
  35.             {
  36.                 break;
  37.             }
  38.             #endregion
  39.             switch (inputCommands[0])
  40.             {
  41.                 case "remove":
  42.                     RemoveCommand(rows, inputCommands[1], matrix, inputCommands[2], int.Parse(inputCommands[3]));
  43.                     break;
  44.                 case "swap":
  45.                     SwapCommand(rows, int.Parse(inputCommands[1]), matrix, int.Parse(inputCommands[2]));
  46.                     break;
  47.                 case "insert":
  48.                     InsertCommand(rows, int.Parse(inputCommands[1]), matrix, int.Parse(inputCommands[2]));
  49.                     break;
  50.             }
  51.         }
  52.         PrintMatrix(rows, matrix);
  53.     }
  54.  
  55.     private static void SwapCommand(int rows, int firstRow, int[][] matrix, int secondRow)
  56.     {
  57.         var temp = matrix[firstRow];
  58.         matrix[firstRow] = matrix[secondRow];
  59.         matrix[secondRow] = temp;
  60.     }
  61.  
  62.     private static void InsertCommand(int rows, int inputCommand, int[][] matrix, int element)
  63.     {
  64.         for (int row = 0; row < rows; row++)
  65.         {
  66.             if (row == inputCommand)
  67.             {
  68.                 List<int> insertCom = matrix[row].ToList();
  69.                 insertCom.Insert(0, element);
  70.                 matrix[row] = insertCom.ToArray();
  71.             }
  72.         }
  73.     }
  74.  
  75.     private static void RemoveCommand(int rows, string inputCommand, int[][] matrix, string rowOrCol, int position)
  76.     {
  77.         switch (inputCommand)
  78.         {
  79.             case "positive":
  80.  
  81.                 switch (rowOrCol)
  82.                 {
  83.                     case "row":
  84.                         RemovePositiveValueRow(rows, matrix, position);
  85.                         break;
  86.                     case "col":
  87.                         RemovePositiveValueCol(rows, matrix, position);
  88.                         break;
  89.                 }
  90.                 break;
  91.             case "negative":
  92.                 switch (rowOrCol)
  93.                 {
  94.                     case "row":
  95.                         RemoveNegativeValueRow(rows, matrix, position);
  96.                         break;
  97.                     case "col":
  98.                         RemoveNegativeValueCol(rows, matrix, position);
  99.                         break;
  100.                 }
  101.                 break;
  102.  
  103.             case "odd":
  104.                 switch (rowOrCol)
  105.                 {
  106.                     case "row":
  107.                         RemoveOddValueRow(rows, matrix, position);
  108.                         break;
  109.                     case "col":
  110.                         RemoveOddValueCol(rows, matrix, position);
  111.                         break;
  112.                 }
  113.                 break;
  114.             case "even":
  115.                 switch (rowOrCol)
  116.                 {
  117.                     case "row":
  118.                         RemoveEvenValueRow(rows, matrix, position);
  119.                         break;
  120.                     case "col":
  121.                         RemoveEvenValueCol(rows, matrix, position);
  122.                         break;
  123.                 }
  124.                 break;
  125.         }
  126.     }
  127.  
  128.     private static void RemoveEvenValueCol(int rows, int[][] matrix, int position)
  129.     {
  130.         int indexOfCol = position;
  131.         for (int row = 0; row < rows; row++)
  132.         {
  133.             for (int col = 0; col < matrix[row].Length; col++)
  134.             {
  135.                 if (indexOfCol > matrix[row].Length)
  136.                 {
  137.                     continue;
  138.                 }
  139.  
  140.                 if (col == indexOfCol)
  141.                 {
  142.                     int valueOfIndex = matrix[row][col];
  143.                     if (valueOfIndex % 2 == 0)
  144.                     {
  145.                         matrix[row] = matrix[row].Where(n => n != valueOfIndex).ToArray().ToArray();
  146.                     }
  147.                 }
  148.             }
  149.         }
  150.     }
  151.  
  152.     private static void RemoveOddValueCol(int rows, int[][] matrix, int position)
  153.     {
  154.         int indexOfCol = position;
  155.         for (int row = 0; row < rows; row++)
  156.         {
  157.             for (int col = 0; col < matrix[row].Length; col++)
  158.             {
  159.                 if (indexOfCol > matrix[row].Length)
  160.                 {
  161.                     continue;
  162.                 }
  163.  
  164.                 if (col == indexOfCol)
  165.                 {
  166.                     int valueOfIndex = matrix[row][col];
  167.                     if (valueOfIndex % 2 != 0)
  168.                     {
  169.                         matrix[row] = matrix[row].Where(n => n != valueOfIndex).ToArray().ToArray();
  170.                     }
  171.                 }
  172.             }
  173.         }
  174.     }
  175.  
  176.     private static void RemoveNegativeValueCol(int rows, int[][] matrix, int position)
  177.     {
  178.         int indexOfCol = position;
  179.         for (int row = 0; row < rows; row++)
  180.         {
  181.             for (int col = 0; col < matrix[row].Length; col++)
  182.             {
  183.                 if (indexOfCol > matrix[row].Length)
  184.                 {
  185.                     continue;
  186.                 }
  187.  
  188.                 if (col == indexOfCol)
  189.                 {
  190.                     int valueOfIndex = matrix[row][col];
  191.                     if (valueOfIndex < 0)
  192.                     {
  193.                         matrix[row] = matrix[row].Where(n => n != valueOfIndex).ToArray().ToArray();
  194.                     }
  195.                 }
  196.             }
  197.         }
  198.     }
  199.  
  200.     private static void RemovePositiveValueCol(int rows, int[][] matrix, int position)
  201.     {
  202.         int indexOfCol = position;
  203.         for (int row = 0; row < rows; row++)
  204.         {
  205.             for (int col = 0; col < matrix[row].Length; col++)
  206.             {
  207.                 if (indexOfCol > matrix[row].Length)
  208.                 {
  209.                     continue;
  210.                 }
  211.  
  212.                 if (col == indexOfCol)
  213.                 {
  214.                     int valueOfIndex = matrix[row][col];
  215.                     if (valueOfIndex >= 0)
  216.                     {
  217.                         matrix[row] = matrix[row].Where(n => n != valueOfIndex).ToArray().ToArray();
  218.                     }
  219.                 }
  220.             }
  221.         }
  222.     }
  223.  
  224.     private static void RemovePositiveValueRow(int rows, int[][] matrix, int position)
  225.     {
  226.         int indexOfRow = position;
  227.         for (int row = 0; row < rows; row++)
  228.         {
  229.             if (row == indexOfRow)
  230.             {
  231.                 matrix[row] = matrix[row].Where(r => r < 0).ToArray();
  232.             }
  233.         }
  234.     }
  235.  
  236.     private static void RemoveNegativeValueRow(int rows, int[][] matrix, int position)
  237.     {
  238.         int indexOfRow = position;
  239.         for (int row = 0; row < rows; row++)
  240.         {
  241.             if (row == indexOfRow)
  242.             {
  243.                 matrix[row] = matrix[row].Where(r => r > 0).ToArray();
  244.             }
  245.         }
  246.     }
  247.  
  248.     private static void RemoveOddValueRow(int rows, int[][] matrix, int position)
  249.     {
  250.         int indexOfRow = position;
  251.         for (int row = 0; row < rows; row++)
  252.         {
  253.             if (row == indexOfRow)
  254.             {
  255.                 matrix[row] = matrix[row].Where(r => r % 2 == 0).ToArray();
  256.             }
  257.         }
  258.     }
  259.  
  260.     private static void RemoveEvenValueRow(int rows, int[][] matrix, int position)
  261.     {
  262.         int indexOfRow = position;
  263.         for (int row = 0; row < rows; row++)
  264.         {
  265.             if (row == indexOfRow)
  266.             {
  267.                 matrix[row] = matrix[row].Where(r => r % 2 != 0).ToArray();
  268.             }
  269.         }
  270.     }
  271. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement