mirozspace

AM1

Feb 15th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.92 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Arrays;
  5.  
  6. public class Pr11ArrayManipulator_v2 {
  7.     public static void main(String[] args) throws IOException {
  8.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  9.         int[] numbers = Arrays
  10.                 .stream(reader.readLine().split("\\s+"))
  11.                 .mapToInt(Integer::parseInt)
  12.                 .toArray();
  13.         String commandConsole;
  14.         while (!("end").equals(commandConsole = reader.readLine())) {
  15.             String[] commandArray = commandConsole.split("\\s+");
  16.             String command = commandArray[0];
  17.             switch (command) {
  18.                 case "exchange":
  19.                     exchangeArray(numbers, Integer.parseInt(commandArray[1]));
  20.                     break;
  21.                 case "min":
  22.                     minElementIndex(numbers, commandArray[1]);
  23.                     break;
  24.                 case "max":
  25.                     maxElementIndex(numbers, commandArray[1]);
  26.                     break;
  27.                 case "first":
  28.                     firstCountElements(numbers, Integer.parseInt(commandArray[1]), commandArray[2]);
  29.                     break;
  30.                 case "last":
  31.                     lastCountElements(numbers, Integer.parseInt(commandArray[1]), commandArray[2]);
  32.                     break;
  33.             }
  34.         }
  35.         System.out.println(Arrays.toString(numbers));
  36.     }
  37.  
  38.     private static void exchangeArray(int[] numbers, int exchangeNumber) {
  39.         if (exchangeNumber < 0 || exchangeNumber >= numbers.length) {
  40.             System.out.println("Invalid index");
  41.             return;
  42.         }
  43.         int j = 0;
  44.         int[] result = new int[numbers.length];
  45.         for (int i = exchangeNumber + 1; i < numbers.length; i++) {
  46.             result[j] = numbers[i];
  47.             j++;
  48.         }
  49.         for (int i = 0; i <= exchangeNumber; i++) {
  50.             result[j] = numbers[i];
  51.             j++;
  52.         }
  53.         System.arraycopy(result, 0, numbers, 0, numbers.length);
  54.     }
  55.  
  56.     private static void minElementIndex(int[] numbers, String oddOrEven) {
  57.         int caseOddEven = (oddOrEven.equals("odd")) ? 1 : 0;
  58.         int minElementValue = Integer.MAX_VALUE;
  59.         int index = -1;
  60.         for (int i = 0; i < numbers.length; i++) {
  61.             if (numbers[i] % 2 == caseOddEven) {
  62.                 if (numbers[i] <= minElementValue) {
  63.                     minElementValue = numbers[i];
  64.                     index = i;
  65.                 }
  66.             }
  67.         }
  68.         if (index == -1) {
  69.             System.out.println("No matches");
  70.         } else {
  71.             System.out.println(index);
  72.         }
  73.     }
  74.  
  75.     private static void maxElementIndex(int[] numbers, String oddOrEven) {
  76.         int caseOddEven = (oddOrEven.equals("odd")) ? 1 : 0;
  77.         int maxElementValue = Integer.MIN_VALUE;
  78.         int index = -1;
  79.         for (int i = 0; i < numbers.length; i++) {
  80.             if (numbers[i] % 2 == caseOddEven) {
  81.                 if (numbers[i] >= maxElementValue) {
  82.                     maxElementValue = numbers[i];
  83.                     index = i;
  84.                 }
  85.             }
  86.         }
  87.         if (index == -1) {
  88.             System.out.println("No matches");
  89.         } else {
  90.             System.out.println(index);
  91.         }
  92.     }
  93.  
  94.     private static void firstCountElements(int[] numbers, int counter, String oddOrEven) {
  95.         int caseOddEven = (oddOrEven.equals("odd")) ? 1 : 0;
  96.         if (counter < 0 || counter > numbers.length) {
  97.             System.out.println("Invalid count");
  98.             return;
  99.         }
  100.         int countFoundElements = 0;
  101.         for (int i = 0; i < numbers.length; i++) {
  102.             if (numbers[i] % 2 == caseOddEven) {
  103.                 countFoundElements++;
  104.             }
  105.         }
  106.         if (countFoundElements == 0) {
  107.             System.out.println("[]");
  108.             return;
  109.         }
  110.         int counterPrint;
  111.         int[] result;
  112.         if (countFoundElements > counter) {
  113.             result = new int[counter];
  114.             counterPrint = counter;
  115.         } else {
  116.             result = new int[countFoundElements];
  117.             counterPrint = countFoundElements;
  118.         }
  119.  
  120.  
  121.         int j = 0;
  122.         for (int i = 0; i < numbers.length; i++) {
  123.             if (numbers[i] % 2 == caseOddEven) {
  124.                 result[j] = numbers[i];
  125.                 j++;
  126.                 counterPrint--;
  127.             }
  128.             if (counterPrint == 0) {
  129.                 break;
  130.             }
  131.         }
  132.         System.out.println(Arrays.toString(result));
  133.     }
  134.  
  135.     private static void lastCountElements(int[] numbers, int counter, String oddOrEven) {
  136.         int caseOddEven = (oddOrEven.equals("odd")) ? 1 : 0;
  137.         if (counter < 0 || counter > numbers.length) {
  138.             System.out.println("Invalid count");
  139.             return;
  140.         }
  141.         int countFoundElements = 0;
  142.         for (int i = 0; i < numbers.length; i++) {
  143.             if (numbers[i] % 2 == caseOddEven) {
  144.                 countFoundElements++;
  145.             }
  146.         }
  147.         if (countFoundElements == 0) {
  148.             System.out.println("[]");
  149.             return;
  150.         }
  151.  
  152.         int counterPrint;
  153.         int[] result;
  154.         if (countFoundElements > counter) {
  155.             result = new int[counter];
  156.             counterPrint = counter;
  157.         } else {
  158.             result = new int[countFoundElements];
  159.             counterPrint = countFoundElements;
  160.         }
  161.  
  162.         int j = result.length - 1;
  163.         for (int i = numbers.length - 1; i >= 0; i--) {
  164.             if (numbers[i] % 2 == caseOddEven) {
  165.                 result[j] = numbers[i];
  166.                 j--;
  167.                 counterPrint--;
  168.             }
  169.             if (counterPrint == 0) {
  170.                 break;
  171.             }
  172.         }
  173.         System.out.println(Arrays.toString(result));
  174.     }
  175. }
Add Comment
Please, Sign In to add comment