Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- namespace _11._Array_Manipulator
- {
- class Program
- {
- static void Main(string[] args)
- {
- int[] array = Console.ReadLine()
- .Split(" ")
- .Select(int.Parse)
- .ToArray();
- string command = Console.ReadLine();
- while(command != "end")
- {
- string[] input = command.Split(" ");
- switch (input[0])
- {
- case "exchange":
- int count = int.Parse(input[1]);
- Exchange(array, count);
- break;
- case "max":
- if (MaxEvenOdd(array, input[1]) != -1)
- {
- Console.WriteLine(MaxEvenOdd(array, input[1]));
- }
- else
- {
- Console.WriteLine("No matches");
- }
- break;
- case "min":
- if (MaxEvenOdd(array, input[1]) != -1)
- {
- Console.WriteLine(MinEvenOdd(array, input[1]));
- }
- else
- {
- Console.WriteLine("No matches");
- }
- break;
- case "first":
- count = int.Parse(input[1]);
- if (count > array.Length)
- {
- Console.WriteLine("Invalid count");
- }
- else
- {
- Console.WriteLine(firstCountEvenOdd(array, count, input[2]));
- }
- break;
- case "last":
- break;
- }
- Console.WriteLine(String.Join(" ", array));
- command = Console.ReadLine();
- }
- static int[] Exchange(int[] array, int count)
- {
- for (int currrentExhange = 0; currrentExhange < count; currrentExhange++)
- {
- int firstNum = array[0];
- for (int currentIndex = 1; currentIndex < array.Length; currentIndex++)
- {
- array[currentIndex - 1] = array[currentIndex];
- }
- array[array.Length - 1] = firstNum;
- }
- return array;
- }
- static int MaxEvenOdd(int[] array, string demand)
- {
- int maxEven = int.MinValue;
- int maxEvenIndex = -1;
- int maxOdd = int.MinValue;
- int maxOddIndex = -1;
- for (int currentIndex = array.Length - 1; currentIndex >= 0; currentIndex--)
- {
- if (array[currentIndex] % 2 == 0 && array[currentIndex] > maxEven)
- {
- maxEven = array[currentIndex];
- maxEvenIndex = currentIndex;
- }
- else if (array[currentIndex] % 2 != 0 && array[currentIndex] > maxOdd)
- {
- maxOdd = array[currentIndex];
- maxOddIndex = currentIndex;
- }
- }
- if (demand == "even")
- {
- return maxEvenIndex;
- }
- else
- {
- return maxOddIndex;
- }
- }
- static int MinEvenOdd (int[] array, string demand)
- {
- int minEven = int.MaxValue;
- int minEvenIndex = -1;
- int minOdd = int.MinValue;
- int minOddIndex = -1;
- for (int currentIndex = array.Length - 1; currentIndex >= 0 ; currentIndex--)
- {
- if (array[currentIndex] % 2 == 0 && array[currentIndex] < minEven)
- {
- minEven = array[currentIndex];
- minEvenIndex = currentIndex;
- }
- else if (array[currentIndex] % 2 != 0 && array[currentIndex] < minOdd)
- {
- minOdd = array[currentIndex];
- minOddIndex = currentIndex;
- }
- }
- if (demand == "even")
- {
- return minEvenIndex;
- }
- else
- {
- return minOddIndex;
- }
- }
- static int[] firstCountEvenOdd(int[] array, int count, string evenOrOdd)
- {
- int[] firstEvenOdd = new int[count];
- int evenCount = 0;
- int oddCount = 0;
- for (int currentIndex = 0; currentIndex < array.Length; currentIndex++)
- {
- if (evenOrOdd == "even" && array[currentIndex] % 2 == 0)
- {
- evenCount++;
- firstEvenOdd[evenCount - 1] = array[currentIndex];
- if (evenCount == count)
- {
- return firstEvenOdd;
- }
- }
- else if (evenOrOdd == "odd" && array[currentIndex] % 2 != 0)
- {
- oddCount++;
- firstEvenOdd[oddCount - 1] = array[currentIndex];
- if (oddCount == count)
- {
- return firstEvenOdd;
- }
- }
- else
- {
- return firstEvenOdd;
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement