Advertisement
Filip_Markoski

[NP] 1.3 Низа од цели броеви (int[]) (Solved)

Oct 16th, 2017
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.28 KB | None | 0 0
  1. import java.io.ByteArrayInputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.Random;
  7. import java.util.Scanner;
  8. import java.util.stream.IntStream;
  9.  
  10. public class IntegerArrayTester {
  11.  
  12.     public static void main(String[] args) {
  13.         Scanner scanner = new Scanner(System.in);
  14.         String s = scanner.nextLine();
  15.         IntegerArray ia = null;
  16.         switch (s) {
  17.             case "testSimpleMethods":
  18.                 ia = new IntegerArray(generateRandomArray(scanner.nextInt()));
  19.                 testSimpleMethods(ia);
  20.                 break;
  21.             case "testConcat":
  22.                 testConcat(scanner);
  23.                 break;
  24.             case "testEquals":
  25.                 testEquals(scanner);
  26.                 break;
  27.             case "testSorting":
  28.                 testSorting(scanner);
  29.                 break;
  30.             case "testReading":
  31.                 testReading(new ByteArrayInputStream(scanner.nextLine().getBytes()));
  32.                 break;
  33.             case "testImmutability":
  34.                 int a[] = generateRandomArray(scanner.nextInt());
  35.                 ia = new IntegerArray(a);
  36.                 testSimpleMethods(ia);
  37.                 testSimpleMethods(ia);
  38.                 IntegerArray sorted_ia = ia.getSorted();
  39.                 testSimpleMethods(ia);
  40.                 testSimpleMethods(sorted_ia);
  41.                 sorted_ia.getSorted();
  42.                 testSimpleMethods(sorted_ia);
  43.                 testSimpleMethods(ia);
  44.                 a[0] += 2;
  45.                 testSimpleMethods(ia);
  46.                 ia = ArrayReader.readIntegerArray(new ByteArrayInputStream(integerArrayToString(ia).getBytes()));
  47.                 testSimpleMethods(ia);
  48.                 break;
  49.         }
  50.         scanner.close();
  51.     }
  52.  
  53.     static void testReading(InputStream in) {
  54.         IntegerArray read = ArrayReader.readIntegerArray(in);
  55.         System.out.println(read);
  56.     }
  57.  
  58.     static void testSorting(Scanner scanner) {
  59.         int[] a = readArray(scanner);
  60.         IntegerArray ia = new IntegerArray(a);
  61.         System.out.println(ia.getSorted());
  62.     }
  63.  
  64.     static void testEquals(Scanner scanner) {
  65.         int[] a = readArray(scanner);
  66.         int[] b = readArray(scanner);
  67.         int[] c = readArray(scanner);
  68.         IntegerArray ia = new IntegerArray(a);
  69.         IntegerArray ib = new IntegerArray(b);
  70.         IntegerArray ic = new IntegerArray(c);
  71.         System.out.println(ia.equals(ib));
  72.         System.out.println(ia.equals(ic));
  73.         System.out.println(ib.equals(ic));
  74.     }
  75.  
  76.     static void testConcat(Scanner scanner) {
  77.         int[] a = readArray(scanner);
  78.         int[] b = readArray(scanner);
  79.         IntegerArray array1 = new IntegerArray(a);
  80.         IntegerArray array2 = new IntegerArray(b);
  81.         IntegerArray concatenated = array1.concat(array2);
  82.         System.out.println(concatenated);
  83.     }
  84.  
  85.     static void testSimpleMethods(IntegerArray ia) {
  86.         System.out.print(integerArrayToString(ia));
  87.         System.out.println(ia);
  88.         System.out.println(ia.sum());
  89.         System.out.printf("%.2f\n", ia.average());
  90.     }
  91.  
  92.  
  93.     static String integerArrayToString(IntegerArray ia) {
  94.         StringBuilder sb = new StringBuilder();
  95.         sb.append(ia.length()).append('\n');
  96.         for (int i = 0; i < ia.length(); ++i)
  97.             sb.append(ia.getElementAt(i)).append(' ');
  98.         sb.append('\n');
  99.         return sb.toString();
  100.     }
  101.  
  102.     static int[] readArray(Scanner scanner) {
  103.         int n = scanner.nextInt();
  104.         int[] a = new int[n];
  105.         for (int i = 0; i < n; ++i) {
  106.             a[i] = scanner.nextInt();
  107.         }
  108.         return a;
  109.     }
  110.  
  111.  
  112.     static int[] generateRandomArray(int k) {
  113.         Random rnd = new Random(k);
  114.         int n = rnd.nextInt(8) + 2;
  115.         int a[] = new int[n];
  116.         for (int i = 0; i < n; ++i) {
  117.             a[i] = rnd.nextInt(20) - 5;
  118.         }
  119.         return a;
  120.     }
  121.  
  122. }
  123.  
  124. final class IntegerArray {
  125.     private int arr[];
  126.  
  127.     IntegerArray(int a[]) {
  128.         arr = new int[a.length];
  129.         for (int i = 0; i < a.length; i++) {
  130.             arr[i] = a[i];
  131.         }
  132.     }
  133.  
  134.     public int length() {
  135.         return arr.length;
  136.     }
  137.  
  138.     public int getElementAt(int i) {
  139.         if (0 <= i && i <= length() - 1) {
  140.             return arr[i];
  141.         } else {
  142.             return -1;
  143.         }
  144.     }
  145.  
  146.     public int sum() {
  147.     /*
  148.         int sum = 0;
  149.         for (int i = 0; i < arr.length; i++) {
  150.             sum += arr[i];
  151.         }
  152.         return sum;
  153.     */
  154.         return Arrays.stream(arr).sum();
  155.     }
  156.  
  157.     public double average() {
  158.     /*
  159.         return (double) sum() / length();
  160.     */
  161.         return Arrays.stream(arr).average().getAsDouble();
  162.     }
  163.  
  164.     public IntegerArray getSorted() {
  165.     /*
  166.         int len = length();
  167.         int[] copy = Arrays.copyOf(arr, len);
  168.         Arrays.sort(copy);
  169.         return new IntegerArray(copy);
  170.     */
  171.         return new IntegerArray(Arrays.stream(arr).sorted().toArray());
  172.     }
  173.  
  174.     public IntegerArray concat(IntegerArray ia) {
  175.     /*
  176.         int len = length();
  177.         int ialen = ia.length();
  178.         int both[] = new int [len + ialen];
  179.         for (int i = 0; i < len; i++) {
  180.             both[i] = arr[i];
  181.         }
  182.         for (int i = 0; i < ialen; i++) {
  183.             both[i + len] = ia.getElementAt(i);
  184.         }
  185.         return new IntegerArray(both);
  186.     */
  187.         int both[] = new int[this.length() + ia.length()];
  188.         System.arraycopy(this.arr, 0, both, 0, this.length());
  189.         System.arraycopy(ia.arr, 0, both, this.length(), ia.length());
  190.         return new IntegerArray(both);
  191.     }
  192.  
  193.     @Override
  194.     public String toString() {
  195.         return Arrays.toString(arr);
  196.     }
  197.  
  198.     /*@Override
  199.     public boolean equals(Object obj) {
  200.         if (this == obj) {
  201.             return true;
  202.         }
  203.         if (obj == null) {
  204.             return false;
  205.         }
  206.         if (getClass() != obj.getClass()) {
  207.             return false;
  208.         }
  209.  
  210.         IntegerArray that = (IntegerArray) obj;
  211.         if (arr.length != that.length()) {
  212.             return false;
  213.         }
  214.  
  215.         for (int i = 0; i < arr.length; i++) {
  216.             if (arr[i] != that.getElementAt(i)) {
  217.                 return false;
  218.             }
  219.         }
  220.  
  221.         if (IntStream.range(0, this.length()).anyMatch(i -> this.arr[i] != that.arr[i])) {
  222.             return false;
  223.         }
  224.         return true;
  225.     }*/
  226.  
  227.     @Override
  228.     public boolean equals(Object o) {
  229.         if (this == o) return true;
  230.         if (o == null || getClass() != o.getClass()) return false;
  231.  
  232.         IntegerArray that = (IntegerArray) o;
  233.  
  234.         return Arrays.equals(arr, that.arr);
  235.     }
  236.  
  237.     @Override
  238.     public int hashCode() {
  239.         return Arrays.hashCode(arr);
  240.     }
  241. }
  242.  
  243. class ArrayReader {
  244.     public static IntegerArray readIntegerArray(InputStream input) {
  245.         Scanner scanner = new Scanner(input);
  246.         int len = scanner.nextInt();
  247.         int numbers[] = new int[len];
  248.         /*for (int i = 0; i < len; i++) {
  249.             numbers[i] = scanner.nextInt();
  250.         }*/
  251.         IntStream.range(0, len).forEach(i -> numbers[i] = scanner.nextInt());
  252.         return new IntegerArray(numbers);
  253.     }
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement