Advertisement
Guest User

18. Sequence of Command - debugged

a guest
Jun 10th, 2017
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.32 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. public class SequenceOfCommands_broken
  5. {
  6.  
  7.     public static void Main()
  8.     {
  9.         Console.ReadLine();
  10.         long[] numbers = Console.ReadLine()
  11.             .Split(' ')
  12.             .Select(long.Parse)
  13.             .ToArray();
  14.         string commandLine = Console.ReadLine();
  15.  
  16.         while (!commandLine.Equals("stop"))
  17.         {
  18.             int[] arguments = new int[2];
  19.             string[] stringParams = commandLine.Split(' ');
  20.             if (stringParams.Length > 1)
  21.             {
  22.                 arguments[0] = int.Parse(stringParams[1]);
  23.                 arguments[1] = int.Parse(stringParams[2]);
  24.             }
  25.             numbers = PerformAction(numbers, stringParams[0], arguments);
  26.             ArrayWriteLine(numbers);
  27.             commandLine = Console.ReadLine();
  28.         }
  29.     }
  30.  
  31.     static long[] PerformAction(long[] nums, string action, int[] args)
  32.     {
  33.         int index = args[0] - 1;
  34.         int value = args[1];
  35.  
  36.         switch (action)
  37.         {
  38.             case "multiply":
  39.                 nums[index] *= value;
  40.                 break;
  41.             case "add":
  42.                 nums[index] += value;
  43.                 break;
  44.             case "subtract":
  45.                 nums[index] -= value;
  46.                 break;
  47.             case "lshift":
  48.                 nums = ShiftElementsLeft(nums);
  49.                 break;
  50.             case "rshift":
  51.                 nums = ShiftElementsRight(nums);
  52.                 break;
  53.         }
  54.         return nums;
  55.     }
  56.  
  57.     private static long[] ShiftElementsRight(long[] array)
  58.     {
  59.         long lastElement = array[array.Length-1];
  60.         for (int i = array.Length - 1; i >= 1; i--)
  61.         {
  62.             array[i] = array[i - 1];
  63.         }
  64.         array[0] = lastElement;
  65.         return array;
  66.     }
  67.  
  68.     private static long[] ShiftElementsLeft(long[] array)
  69.     {
  70.         long firstElement = array[0];
  71.         for (int i = 0; i < array.Length - 1; i++)
  72.         {
  73.             array[i] = array[i + 1];
  74.         }
  75.         array[array.Length - 1] = firstElement;
  76.         return array;
  77.     }
  78.  
  79.     private static void ArrayWriteLine(long[] array)
  80.     {
  81.         for (int i = 0; i < array.Length; i++)
  82.         {
  83.             Console.Write(array[i] + " ");
  84.         }
  85.         Console.WriteLine();
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement