Martina312

[НП] - Низа од цели броеви

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