Advertisement
elena1234

ArrayManipulator

Aug 5th, 2020 (edited)
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.41 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ArrayManipulatorWithList
  7. {
  8.     class MainClass
  9.     {
  10.         public static void Main(string[] args)
  11.         {
  12.  
  13.             List<int> numbers = Console.ReadLine().Split().Select(int.Parse).ToList();
  14.             List<int> oddNumbers = new List<int>();
  15.             List<int> evenNumbers = new List<int>();
  16.        
  17.  
  18.             string command = Console.ReadLine();
  19.  
  20.             while (command != "end")
  21.             {
  22.                 string[] commandArr = command.Split().ToArray();
  23.  
  24.                 if (commandArr[0] == "exchange")
  25.                 {
  26.                     ExchangeAfterIndex(numbers, commandArr);
  27.                 }
  28.  
  29.                 else if (commandArr[0] == "max")
  30.                 {
  31.                     if (commandArr[1] == "even")
  32.                     {
  33.                         PrintMaxEvenIndex(numbers, evenNumbers);
  34.  
  35.                     }
  36.  
  37.                     else if (commandArr[1] == "odd")
  38.                     {
  39.                         PrintMaxOddIndex(numbers, oddNumbers);
  40.  
  41.                     }
  42.                 }
  43.  
  44.                 else if (commandArr[0] == "min")
  45.                 {
  46.                     if (commandArr[1] == "even")
  47.                     {
  48.                         PrintMinEvenIndex(numbers, evenNumbers);
  49.  
  50.                     }
  51.  
  52.                     else if (commandArr[1] == "odd")
  53.                         PrintMinOddIndex(numbers, oddNumbers);
  54.                 }
  55.  
  56.                 else if (commandArr[0] == "first")
  57.                 {
  58.                    int counter = int.Parse(commandArr[1]);
  59.                    if (commandArr[2] == "even")
  60.                     {
  61.                         PrintFirstEvenNumber(numbers, counter);
  62.  
  63.                     }
  64.  
  65.                     else if (commandArr[2] == "odd")
  66.                         PrintFirstOddNumber(numbers, counter);
  67.                 }
  68.  
  69.                 else if (commandArr[0] == "last")
  70.                 {
  71.                     int counter = int.Parse(commandArr[1]);
  72.  
  73.                     if (commandArr[2] == "even")
  74.                     {
  75.                         PrintLastEvenNumbers(numbers, counter);
  76.  
  77.                     }
  78.  
  79.                     else if (commandArr[2] == "odd")
  80.                     {
  81.                         PrintLastOddNumbers(numbers, counter);
  82.  
  83.                     }
  84.                 }
  85.  
  86.                 command = Console.ReadLine();
  87.             }
  88.  
  89.             Console.Write("[");
  90.             Console.Write(string.Join(", ",numbers));
  91.             Console.WriteLine("]");
  92.         }
  93.  
  94.  
  95.         private static void PrintLastOddNumbers(List<int> numbers, int counter)
  96.         {
  97.             var newListOfOdd = numbers.Where(x => x % 2 != 0).ToList();
  98.             newListOfOdd.Reverse();
  99.             if (counter > numbers.Count)
  100.             {
  101.                 Console.WriteLine("Invalid count");
  102.             }
  103.  
  104.             else if (counter <= numbers.Count && newListOfOdd.Count != 0)
  105.             {
  106.                 List<int> newReverseListOfEven = new List<int>().ToList();
  107.  
  108.                 int newCounter = Math.Min(counter, newListOfOdd.Count);
  109.                 for (int i = 0; i < newCounter; i++)
  110.                 {
  111.                     newReverseListOfEven.Add(newListOfOdd[i]);
  112.                 }
  113.                 newReverseListOfEven.Reverse();
  114.  
  115.                 Console.Write("[");
  116.                 Console.Write(string.Join(", ", newReverseListOfEven));
  117.                 Console.WriteLine("]");
  118.  
  119.             }
  120.             else if (newListOfOdd.Count == 0)
  121.             {
  122.                 Console.WriteLine("[]");
  123.             }
  124.         }
  125.  
  126.         private static void PrintLastEvenNumbers(List<int> numbers, int counter)
  127.         {
  128.             var newListOfeven = numbers.Where(x => x % 2 == 0).ToList();
  129.             newListOfeven.Reverse();
  130.  
  131.  
  132.             if (counter > numbers.Count)
  133.             {
  134.                 Console.WriteLine("Invalid count");
  135.             }
  136.  
  137.             else if (counter <= numbers.Count && newListOfeven.Count != 0)
  138.             {
  139.                 List<int> newReverseListOfEven = new List<int>().ToList();
  140.  
  141.                 int newCounter = Math.Min(counter, newListOfeven.Count);
  142.                 for (int i = 0; i < newCounter; i++)
  143.                 {
  144.                     newReverseListOfEven.Add(newListOfeven[i]);
  145.                 }
  146.                 newReverseListOfEven.Reverse();
  147.  
  148.                 Console.Write("[");
  149.                 Console.Write(string.Join(", ", newReverseListOfEven));
  150.                 Console.WriteLine("]");
  151.  
  152.             }
  153.             else if (newListOfeven.Count == 0)
  154.             {
  155.                 Console.WriteLine("[]");
  156.             }
  157.         }
  158.  
  159.         private static void PrintFirstOddNumber(List<int> numbers, int counter)
  160.         {
  161.             var newListOfOdd = numbers.Where(x => x % 2 != 0).ToList();
  162.  
  163.             if (counter > numbers.Count)
  164.             {
  165.                 Console.WriteLine("Invalid count");
  166.             }
  167.  
  168.             else if (counter <= numbers.Count && newListOfOdd.Count != 0)
  169.             {
  170.                 int newCounter = Math.Min(counter, newListOfOdd.Count);
  171.                 Console.Write("[");
  172.                 for (int i = 0; i < newCounter; i++)
  173.                 {
  174.  
  175.                     if (i == newCounter - 1)
  176.                     {
  177.                         Console.Write(newListOfOdd[i]);
  178.                     }
  179.                     else
  180.                     {
  181.                         Console.Write(newListOfOdd[i] + "," + " ");
  182.                     }
  183.                 }
  184.                 Console.WriteLine("]");
  185.             }
  186.             else if (newListOfOdd.Count == 0)
  187.             {
  188.                 Console.WriteLine("[]");
  189.             }
  190.         }
  191.  
  192.         private static void PrintFirstEvenNumber(List<int> numbers, int counter)
  193.         {
  194.             var newListOfeven = numbers.Where(x => x % 2 == 0).ToList();
  195.  
  196.             if (counter > numbers.Count)
  197.             {
  198.                 Console.WriteLine("Invalid count");
  199.             }
  200.  
  201.             else if (counter <= numbers.Count && newListOfeven.Count != 0)
  202.             {
  203.                 int newCounter = Math.Min(counter, newListOfeven.Count);
  204.                 Console.Write("[");
  205.                 for (int i = 0; i < newCounter; i++)
  206.                 {
  207.  
  208.                     if (i == newCounter - 1)
  209.                     {
  210.                         Console.Write(newListOfeven[i]);
  211.                     }
  212.                     else
  213.                     {
  214.                         Console.Write(newListOfeven[i] + "," + " ");
  215.                     }
  216.                 }
  217.                 Console.WriteLine("]");
  218.             }
  219.             else if (newListOfeven.Count == 0)
  220.             {
  221.                 Console.WriteLine("[]");
  222.             }
  223.         }
  224.  
  225.         private static void PrintMinOddIndex(List<int> numbers, List<int> oddNumbers)
  226.         {
  227.             int minOdd = +2147483647;
  228.             for (int i = 0; i < numbers.Count; i++)
  229.             {
  230.                 if (numbers[i] % 2 != 0)
  231.                 {
  232.                     if (numbers[i] <= minOdd)
  233.                     {
  234.                         oddNumbers.Add(numbers[i]);
  235.                         minOdd = numbers[i];
  236.                     }
  237.                 }
  238.             }
  239.             if (oddNumbers.Count > 0)
  240.             {
  241.                 Console.WriteLine(numbers.LastIndexOf(minOdd));
  242.             }
  243.  
  244.             else
  245.             {
  246.                 Console.WriteLine("No matches");
  247.             }
  248.  
  249.         }
  250.  
  251.         private static void PrintMinEvenIndex(List<int> numbers, List<int> evenNumbers)
  252.         {
  253.             int minEven = 2147483647;
  254.             for (int i = 0; i < numbers.Count; i++)
  255.             {
  256.                 if (numbers[i] % 2 == 0)
  257.                 {
  258.                     if (numbers[i] <= minEven)
  259.                     {
  260.                         evenNumbers.Add(numbers[i]);
  261.                         minEven = numbers[i];
  262.  
  263.                     }
  264.                 }
  265.             }
  266.             if (evenNumbers.Count > 0)
  267.             {
  268.                 Console.WriteLine(numbers.LastIndexOf(minEven));
  269.             }
  270.             else
  271.             {
  272.                 Console.WriteLine("No matches");
  273.             }
  274.         }
  275.  
  276.         private static void PrintMaxOddIndex(List<int> numbers, List<int> oddNumbers)
  277.         {
  278.             int maxOdd = -2147483648;
  279.             for (int i = 0; i < numbers.Count; i++)
  280.             {
  281.                 if (numbers[i] % 2 != 0)
  282.                 {
  283.                     if (numbers[i] >= maxOdd)
  284.                     {
  285.                         oddNumbers.Add(numbers[i]);
  286.                         maxOdd = numbers[i];
  287.                     }
  288.                 }
  289.             }
  290.             if (oddNumbers.Count > 0)
  291.             {
  292.                 Console.WriteLine(numbers.LastIndexOf(maxOdd));
  293.             }
  294.             else
  295.             {
  296.                 Console.WriteLine("No matches");
  297.             }
  298.         }
  299.  
  300.         private static void PrintMaxEvenIndex(List<int> numbers, List<int> evenNumbers)
  301.         {
  302.             int maxEven = -2147483648;
  303.             for (int i = 0; i < numbers.Count; i++)
  304.             {
  305.                 if (numbers[i] % 2 == 0)
  306.                 {
  307.                     evenNumbers.Add(numbers[i]);
  308.                     if (numbers[i] >= maxEven)
  309.                     {
  310.                         maxEven = numbers[i];
  311.  
  312.                     }
  313.                 }
  314.             }
  315.             if (evenNumbers.Count > 0)
  316.             {
  317.                 Console.WriteLine(numbers.LastIndexOf(maxEven));
  318.             }
  319.             else
  320.             {
  321.                 Console.WriteLine("No matches");
  322.             }
  323.         }
  324.  
  325.         private static void ExchangeAfterIndex(List<int> numbers, string[] commandArr)
  326.         {
  327.             int index = int.Parse(commandArr[1]);
  328.             if (index < 0 || index > numbers.Count - 1)
  329.             {
  330.                 Console.WriteLine("Invalid index");
  331.  
  332.             }
  333.             else
  334.             {
  335.                 for (int l = 0; l <= index; l++)
  336.                 {
  337.                     int a = numbers[0];
  338.  
  339.                     for (int i = 0; i < numbers.Count - 1; i++)
  340.                     {
  341.                         numbers[i] = numbers[i + 1];
  342.                     }
  343.  
  344.                     numbers[numbers.Count - 1] = a;
  345.  
  346.  
  347.                 }
  348.  
  349.             }
  350.         }
  351.     }
  352. }
  353.  
  354.  
  355.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement