Advertisement
196040

NP lab 1 Niza od celi broevi

Nov 2nd, 2021
1,769
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.07 KB | None | 0 0
  1. //package naprednolabs;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.Arrays;
  6. import java.util.Random;
  7. import java.util.Scanner;
  8. import static java.util.Arrays.*;
  9. public class IntegerArrayTester {
  10.     public static void main(String[] args) throws IOException {
  11.         Scanner scanner = new Scanner(System.in);
  12.         String s = scanner.nextLine();
  13.         IntegerArray ia = null;
  14.         switch (s) {
  15.             case "testSimpleMethods":
  16.                 ia = new IntegerArray(generateRandomArray(scanner.nextInt()));
  17.                 testSimpleMethods(ia);
  18.                 break;
  19.             case "testConcat":
  20.                 testConcat(scanner);
  21.                 break;
  22.             case "testEquals":
  23.                 testEquals(scanner);
  24.                 break;
  25.             case "testSorting":
  26.                 testSorting(scanner);
  27.                 break;
  28.             case "testReading":
  29.                 testReading(new ByteArrayInputStream(scanner.nextLine().getBytes()));
  30.                 break;
  31.             case "testImmutability":
  32.                 int a[] = generateRandomArray(scanner.nextInt());
  33.                 ia = new IntegerArray(a);
  34.                 testSimpleMethods(ia);
  35.                 testSimpleMethods(ia);
  36.                 IntegerArray sorted_ia = ia.getSorted();
  37.                 testSimpleMethods(ia);
  38.                 testSimpleMethods(sorted_ia);
  39.                 sorted_ia.getSorted();
  40.                 testSimpleMethods(sorted_ia);
  41.                 testSimpleMethods(ia);
  42.                 a[0] += 2;
  43.                 testSimpleMethods(ia);
  44.                 ia = ArrayReader.readIntegerArray(new ByteArrayInputStream(integerArrayToString(ia).getBytes()));
  45.                 testSimpleMethods(ia);
  46.                 break;
  47.         }
  48.         scanner.close();
  49.     }
  50.  
  51.     static void testReading(InputStream in) throws IOException {
  52.         IntegerArray read = ArrayReader.readIntegerArray(in);
  53.         System.out.println(read);
  54.     }
  55.  
  56.     static void testSorting(Scanner scanner) {
  57.         int[] a = readArray(scanner);
  58.         IntegerArray ia = new IntegerArray(a);
  59.         System.out.println(ia.getSorted());
  60.     }
  61.  
  62.     static void testEquals(Scanner scanner) {
  63.         int[] a = readArray(scanner);
  64.         int[] b = readArray(scanner);
  65.         int[] c = readArray(scanner);
  66.         IntegerArray ia = new IntegerArray(a);
  67.         IntegerArray ib = new IntegerArray(b);
  68.         IntegerArray ic = new IntegerArray(c);
  69.         System.out.println(ia.equals(ib));
  70.         System.out.println(ia.equals(ic));
  71.         System.out.println(ib.equals(ic));
  72.     }
  73.  
  74.     static void testConcat(Scanner scanner) {
  75.         int[] a = readArray(scanner);
  76.         int[] b = readArray(scanner);
  77.         IntegerArray array1 = new IntegerArray(a);
  78.         IntegerArray array2 = new IntegerArray(b);
  79.         IntegerArray concatenated = array1.concat(array2);
  80.         System.out.println(concatenated);
  81.     }
  82.  
  83.     static void testSimpleMethods(IntegerArray ia) {
  84.         System.out.print(integerArrayToString(ia));
  85.         System.out.println(ia);
  86.         System.out.println(ia.sum());
  87.         System.out.printf("%.2f\n", ia.average());
  88.     }
  89.  
  90.  
  91.     static String integerArrayToString(IntegerArray ia) {
  92.         StringBuilder sb = new StringBuilder();
  93.         sb.append(ia.length()).append('\n');
  94.         for (int i = 0; i < ia.length(); ++i)
  95.             sb.append(ia.getElementAt(i)).append(' ');
  96.         sb.append('\n');
  97.         return sb.toString();
  98.     }
  99.  
  100.     static int[] readArray(Scanner scanner) {
  101.         int n = scanner.nextInt();
  102.         int[] a = new int[n];
  103.         for (int i = 0; i < n; ++i) {
  104.             a[i] = scanner.nextInt();
  105.         }
  106.         return a;
  107.     }
  108.     static int[] generateRandomArray(int k) {
  109.         Random rnd = new Random(k);
  110.         int n = rnd.nextInt(8) + 2;
  111.         int a[] = new int[n];
  112.         for (int i = 0; i < n; ++i) {
  113.             a[i] = rnd.nextInt(20) - 5;
  114.         }
  115.         return a;
  116.     }
  117. }
  118. final class IntegerArray {
  119.     private int [] niza;
  120.     public IntegerArray(int [] a) {
  121.         this.niza = new int[a.length];
  122.         for(int i=0; i<a.length;i++)
  123.             this.niza[i] = a[i];
  124.     }
  125.     public int length() {
  126.         return this.niza.length;
  127.     }
  128.     public int getElementAt(int i) {
  129.         return this.niza[i];
  130.     }
  131.     public int sum() {
  132.         int sum = 0;
  133.         for(int i=0; i<this.niza.length; i++)
  134.             sum+=this.niza[i];
  135.         return sum;
  136.     }
  137.     public double average() {
  138.         return (double)sum() / this.niza.length;
  139.     }
  140.     public IntegerArray getSorted() {
  141.         IntegerArray novo = new IntegerArray(niza);
  142.         Arrays.sort(novo.niza);
  143.         return novo;
  144.     }
  145.     public IntegerArray concat(IntegerArray ia) {
  146.         int[] nova = new int[ia.length() + this.niza.length];
  147.         for(int i=0; i<niza.length; i++)
  148.             nova[i]=this.niza[i];
  149.         int j = 0;
  150.         for(int i=this.niza.length; i<this.niza.length+ia.length(); i++)
  151.             nova[i] = ia.getElementAt(j++);
  152.          return new IntegerArray(nova);
  153.     }
  154.     @Override
  155.     public String toString() {
  156.         StringBuilder sb = new StringBuilder();
  157.         sb.append("[");
  158.         for(int i=0; i<this.niza.length-1; i++)
  159.             sb.append(String.format("%d, ",niza[i]));
  160.         sb.append(String.format("%d]", niza[niza.length-1]));
  161.         return sb.toString();
  162.     }
  163.  
  164.     @Override
  165.     public boolean equals(Object obj) {
  166.         if(((IntegerArray)obj).length() != this.length())
  167.             return false;
  168.         for(int i=0; i<this.niza.length;i++)
  169.             if(((IntegerArray) obj).getElementAt(i) != this.niza[i])
  170.                 return false;
  171.         return true;
  172.     }
  173. }
  174. class ArrayReader {
  175.     public static IntegerArray readIntegerArray(InputStream input) throws IOException {
  176.         Scanner s = new Scanner(input);
  177.         int n = s.nextInt();
  178.         int [] nova = new int[n];
  179.         for(int i=0; i<n; i++)
  180.             nova[i] = s.nextInt();
  181.         return new IntegerArray(nova);
  182.     }
  183. }
  184.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement