Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace _11_Array_Manipulator
- {
- class Program
- {
- static void Main(string[] args)
- {
- string arr = Console.ReadLine();
- string[] array = arr.Split();
- while (true)
- {
- string command = Console.ReadLine();
- if (command == "end")
- {
- Console.WriteLine("[" + string.Join(", ", array) + "]");
- break;
- }
- string[] text = command.Split();
- if (text[0] == "exchange")
- {
- if ((int.Parse)(text[1]) >= array.Length || (int.Parse)(text[1]) < 0)
- {
- Console.WriteLine("Invalid index");
- }
- else
- {
- char[] symbolToSplit = {' '};
- string[] result = PrintExchangedArray(command, arr).Split(symbolToSplit, StringSplitOptions.RemoveEmptyEntries);
- for (int i = 0; i < result.Length; i++)
- {
- array[i] = result[i];
- arr = string.Join(" ", array);
- }
- //Console.WriteLine(string.Join(" ", array));
- }
- }
- else if (text[0] == "max" && (text[1] == "even" || text[1] == "odd"))
- {
- if (GetMaxOfEvenOrOddIndex(command, arr) > -1)
- {
- int result = GetMaxOfEvenOrOddIndex(command, arr);
- Console.WriteLine(result);
- }
- else
- {
- Console.WriteLine("No matches");
- }
- }
- else if (text[0] == "min" && (text[1] == "even" || text[1] == "odd"))
- {
- if (GetMInOfEvenOrOodIndex(command, arr) > -1)
- {
- int result = GetMInOfEvenOrOodIndex(command, arr);
- Console.WriteLine(result);
- }
- else
- {
- Console.WriteLine("No matches");
- }
- }
- else if (text[0] == "first")
- {
- PrintFirstEvenOrOddElements(command, arr);
- }
- else if (text[0] == "last")
- {
- PrintLastEvenOrOddElements(command, arr);
- }
- }
- }
- static string PrintExchangedArray(string command, string arr)
- {
- string[] text = arr.Split();
- string[] commandArrayed = command.Split();
- string endText = string.Empty;
- string beginText = string.Empty;
- for (int i = 0; i < text.Length; i++)
- {
- if (i <= (int.Parse)(commandArrayed[1]))
- {
- endText += text[i] + " ";
- }
- else
- {
- beginText += text[i] + " ";
- }
- }
- string wholeText = beginText + "" + endText;
- return wholeText;
- }
- static int GetMaxOfEvenOrOddIndex(string command, string arr)
- {
- string[] commandArrayed = command.Split();
- string[] text = arr.Split();
- int maxEvenElement = int.MinValue;
- int maxIndex = -1;
- int maxOddElement = int.MinValue;
- if (commandArrayed[0] == "max" && commandArrayed[1] == "even")
- {
- for (int i = 0; i < text.Length; i++)
- {
- if ((int.Parse)(text[i].ToString()) % 2 == 0 && (int.Parse)(text[i].ToString()) >= maxEvenElement)
- {
- maxEvenElement = (int.Parse)(text[i].ToString());
- maxIndex = i;
- }
- }
- }
- else if (commandArrayed[0] == "max" && commandArrayed[1] == "odd")
- {
- for (int i = 0; i < text.Length; i++)
- {
- if ((int.Parse)(text[i].ToString()) % 2 != 0 && (int.Parse)(text[i].ToString()) >= maxOddElement)
- {
- maxOddElement = (int.Parse)(text[i].ToString());
- maxIndex = i;
- }
- }
- }
- return maxIndex;
- }
- static int GetMInOfEvenOrOodIndex(string command, string arr)
- {
- string[] commandArrayed = command.Split();
- string[] text = arr.Split();
- int minEvenElement = int.MaxValue;
- int maxIndex = -1;
- int minOddElement = int.MaxValue;
- if (commandArrayed[0] == "min" && commandArrayed[1] == "even")
- {
- for (int i = 0; i < text.Length; i++)
- {
- if ((int.Parse)(text[i].ToString()) % 2 == 0 && (int.Parse)(text[i].ToString()) <= minEvenElement)
- {
- minEvenElement = (int.Parse)(text[i].ToString());
- maxIndex = i;
- }
- }
- }
- else if (commandArrayed[0] == "min" && commandArrayed[1] == "odd")
- {
- for (int i = 0; i < text.Length; i++)
- {
- if ((int.Parse)(text[i].ToString()) % 2 != 0 && (int.Parse)(text[i].ToString()) <= minOddElement)
- {
- minOddElement = (int.Parse)(text[i].ToString());
- maxIndex = i;
- }
- }
- }
- return maxIndex;
- }
- static void PrintFirstEvenOrOddElements(string command, string arr)
- {
- string[] commandArrayed = command.Split();
- string[] text = arr.Split();
- string resultEven = string.Empty;
- int evenCounter = 0;
- if ((int.Parse)(commandArrayed[1]) > text.Length)
- {
- resultEven = "Invalid count";
- Console.WriteLine(resultEven);
- return;
- }
- for (int i = 0; i < text.Length; i++)
- {
- if ((int.Parse)(text[i]) % 2 == 0 && commandArrayed[2] == "even")
- {
- if (evenCounter < (int.Parse)(commandArrayed[1]))
- {
- resultEven += text[i] + " ";
- evenCounter++;
- }
- else
- {
- break;
- }
- }
- else if ((int.Parse)(text[i]) % 2 != 0 && commandArrayed[2] == "odd")
- {
- if (evenCounter < (int.Parse)(commandArrayed[1]))
- {
- resultEven += text[i] + " ";
- evenCounter++;
- }
- else
- {
- break;
- }
- }
- }
- if (evenCounter == 0)
- {
- resultEven = "[]";
- Console.WriteLine(resultEven);
- return;
- }
- char[] symbolToSplit = { ' ' };
- string[] Result = resultEven.Split(symbolToSplit, StringSplitOptions.RemoveEmptyEntries);
- Console.Write("[");
- for (int i = 0; i < Result.Length; i++)
- {
- if (i == Result.Length - 1)
- {
- Console.WriteLine($"{Result[i]}]");
- return;
- }
- Console.Write($"{Result[i]}, ");
- }
- }
- static void PrintLastEvenOrOddElements(string command, string arr)
- {
- string[] commandArrayed = command.Split();
- string[] text = arr.Split();
- string result = string.Empty;
- string reversedResult = string.Empty;
- int counter = 0;
- if ((int.Parse)(commandArrayed[1]) > text.Length)
- {
- reversedResult = "Invalid count";
- Console.WriteLine(reversedResult);
- return;
- }
- for (int i = 0; i < text.Length; i++)
- {
- if ((int.Parse)(text[i]) % 2 == 0 && commandArrayed[2] == "even")
- {
- result += text[i] + " ";
- }
- else if ((int.Parse)(text[i]) % 2 != 0 && commandArrayed[2] == "odd")
- {
- result += text[i] + " ";
- }
- }
- char[] symbolToSplit = { ' ' };
- string[] realResult = result.Split(symbolToSplit, StringSplitOptions.RemoveEmptyEntries);
- for (int i = realResult.Length - 1; i >= 0; i--)
- {
- if (counter < (int.Parse)(commandArrayed[1]))
- {
- reversedResult += realResult[i] + " ";
- counter++;
- }
- }
- if (counter == 0)
- {
- reversedResult = "[]";
- Console.WriteLine(reversedResult);
- return;
- }
- string[] realReversedResult = reversedResult.Split(symbolToSplit, StringSplitOptions.RemoveEmptyEntries);
- string revResultInString = string.Empty;
- for (int i = 0; i < realReversedResult.Length; i++)
- {
- revResultInString += realReversedResult[i] + " ";
- }
- string[] theResult = revResultInString.Split(symbolToSplit, StringSplitOptions.RemoveEmptyEntries);
- Console.Write("[");
- for (int i = theResult.Length -1; i >= 0 ; i--)
- {
- if (i == 0)
- {
- Console.WriteLine($"{theResult[i]}]");
- return;
- }
- Console.Write($"{theResult[i]}, ");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment