Advertisement
vvsvvs

Untitled

May 25th, 2022
927
137 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4.  
  5. namespace Jagged_Array_Manipulator
  6. {
  7.     class JaggedArrayManipulator
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             int n = int.Parse(Console.ReadLine());
  12.  
  13.             double[][] matrix = new double[n][];
  14.  
  15.             for (int i = 0; i < n; i++)
  16.             {
  17.                 double[] temp = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(double.Parse).ToArray();
  18.                 matrix[i] = temp;
  19.             }
  20.  
  21.             for (int row = 0; row < matrix.Length - 1; row++)
  22.             {
  23.                 if (matrix[row].Length.Equals(matrix[row + 1].Length))
  24.                 {
  25.                     double[] temp = matrix[row].Select(x => x *= 2).ToArray();
  26.                     matrix[row] = temp;
  27.                     temp = matrix[row + 1].Select(x => x *= 2).ToArray();
  28.                     matrix[row + 1] = temp;
  29.                 }
  30.                 else
  31.                 {
  32.                     double[] temp = matrix[row].Select(x => x /= 2).ToArray();
  33.                     matrix[row] = temp;
  34.                     temp = matrix[row + 1].Select(x => x /= 2).ToArray();
  35.                     matrix[row + 1] = temp;
  36.                 }
  37.             }
  38.  
  39.             bool isExitLoop = false;
  40.  
  41.             while (!isExitLoop)
  42.             {
  43.                 string input = Console.ReadLine();
  44.  
  45.                 if (input.ToLower().Equals("end"))
  46.                 {
  47.                     isExitLoop = true;
  48.                 }
  49.                 else
  50.                 {
  51.                     string[] commands = input.Split(' ', StringSplitOptions.RemoveEmptyEntries);
  52.                     string command = commands[0];
  53.                     int newRow = int.Parse(commands[1]);
  54.                     int newCol = int.Parse(commands[2]);
  55.                     double newValue = double.Parse(commands[3]);
  56.  
  57.                     bool isValidIndexes = ((newRow >= 0) && (newRow < matrix.Length));
  58.                     isValidIndexes = ((isValidIndexes) && (newCol >= 0) && (newCol < matrix[newRow].Length));
  59.  
  60.                     if (isValidIndexes)
  61.                     {
  62.                         switch (command.ToLower())
  63.                         {
  64.                             case "add":
  65.                                 matrix[newRow][newCol] += newValue;
  66.                                 break;
  67.                             case "subtract":
  68.                                 matrix[newRow][newCol] -= newValue;
  69.                                 break;
  70.                             default:
  71.                                 break;
  72.                         }
  73.                     }                  
  74.                 }
  75.             }// while (!isExitLoop)
  76.  
  77.             StringBuilder sb = new StringBuilder();        
  78.  
  79.             for (int row = 0; row < matrix.Length; row++)
  80.             {              
  81.                 sb.AppendLine(string.Join(" ", matrix[row]));
  82.             }
  83.  
  84.             Console.WriteLine(sb.ToString());
  85.         }
  86.     }
  87. }
Advertisement
RAW Paste Data Copied
Advertisement