Advertisement
Guest User

Prog1

a guest
May 25th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.63 KB | None | 0 0
  1. /**
  2. Klasse IntSet
  3.  
  4. @author Lando Busch 4603944 Gruppe 4a
  5. */
  6. public class IntSet {
  7. private int[] set;
  8. public IntSet(int ... pValues)
  9. {
  10. int[] lNew = new int[pValues.length];
  11. int lCount = 0;
  12. for (int x = 0; x < pValues.length; x++) // Jedes Element von pValues durchlaufen
  13. {
  14. boolean lContains = false;
  15. for(int y = x; y >= 0; y--) // Prüfen ob dieses Element schonmal vorkam
  16. {
  17. if (x != y && pValues[x] == pValues[y])
  18. {
  19.  
  20. lContains = true;
  21. break;
  22. }
  23. }
  24. if (!lContains) // Wenn es noch nicht vorkam, dann in neues Array hinzufügen
  25. {
  26. lNew[lCount] = pValues[x];
  27. lCount++;
  28. }
  29. }
  30.  
  31. set = new int[lCount];
  32. for (int a = 0; a < lCount; a++) // Zum Schluss set befüllen mit den Daten aus dem neuen Array
  33. {
  34. set[a] = lNew[a];
  35. }
  36.  
  37. }
  38. public int max()
  39. {
  40. if (set.length == 0)
  41. return 0;
  42. int lMax = set[0]; // Variable in der jeweils der größtmögliche Wert festgehalten wird
  43. if (set.length > 1)
  44. {
  45. for (int i = 0; i < set.length; i++)
  46. {
  47. if (lMax < set[i]) // Wenn aktuelles Array-Element größer als der bisher größte Wert in der Variable, dann ..
  48. {
  49. lMax = set[i]; // .. wird Variable zu dem Wert gesetzt
  50. }
  51. }
  52. }
  53. return lMax;
  54. }
  55. public int min() // das gleiche wie max nur das auf kleiner statt größer geprüft wird
  56. {
  57. if (set.length == 0)
  58. return 0;
  59. int lMin = set[0];
  60. if (set.length > 1)
  61. {
  62. for (int i = 0; i < set.length; i++)
  63. {
  64. if (lMin > set[i])
  65. {
  66. lMin = set[i];
  67. }
  68. }
  69. }
  70. return lMin;
  71. }
  72. public int sum()
  73. {
  74. int lSum = 0;
  75. for (int i = 0; i < set.length; i++) // Durch die Liste gehen und alle Werte auf die Variable draufaddieren
  76. {
  77. lSum += set[i];
  78. }
  79. return lSum;
  80. }
  81. public int avg() // Summe / Anzahl
  82. {
  83. if (set.length == 0)
  84. return 0;
  85. int lSum = sum();
  86. return Math.round(lSum / set.length);
  87. }
  88. public void addAll(IntSet pSet)
  89. {
  90. int lCount = set.length + pSet.set.length;
  91. int[] lValue = new int[lCount];
  92. lCount = 0;
  93. for (int x = 0; x < set.length; x++) // Liste mit den Werten des ersten IntSet befüllen
  94. {
  95. lValue[x] = set[x];
  96. }
  97. for (int y = 0; y < pSet.set.length; y++) // Liste mit den Werten des zweiten Intset befüllen, ..
  98. {
  99. boolean contains = false;
  100. for (int a = 0; a < lValue.length; a++) // Prüfen ob pSet.set aktuelles Element in lValue vorhanden ist
  101. {
  102. if (lValue[a] == pSet.set[y])
  103. {
  104. contains = true;
  105. lCount++;
  106. break;
  107. }
  108. }
  109. if (!contains) // Wenn nicht vorhanden
  110. {
  111. lValue[set.length + y - lCount] = pSet.set[y]; // hinzufügen
  112. }
  113. }
  114. set = new int[set.length + pSet.set.length - lCount]; // Zum Schluss set wieder befüllen
  115. for (int b = 0; b < set.length; b++)
  116. {
  117. set[b] = lValue[b];
  118. }
  119. }
  120. public void print()
  121. {
  122. for (int x = 0; x < set.length; x++) // Durch liste gehen und ausgeben
  123. {
  124. System.out.println(set[x]);
  125. }
  126. }
  127. public void retainAll(IntSet pSet)
  128. {
  129. int lCount = 0;
  130. for (int i = 0; i < set.length; i++) // Durch erste Liste durchlaufen
  131. {
  132. for (int x = 0; x < pSet.set.length; x++) // Für jedes element in der ersten Liste prüfen ob es dieses in der zweiten Liste gibt
  133. {
  134. if (set[i] == pSet.set[x]) // Wenn ja dann Zähler erhöhen und in set den Wert speichern
  135. {
  136. set[lCount] = set[i];
  137. lCount++;
  138. }
  139. }
  140. }
  141. int[] lNumbs = new int[lCount];
  142. for (int y = 0; y < lCount; y++) // Neues Array befüllen (dieses ist kleiner als set) und Werte von set übertragen
  143. {
  144. lNumbs[y] = set[y];
  145. }
  146. set = lNumbs;
  147. }
  148. public void removeAll(IntSet pSet)
  149. {
  150. int lCount = 0;
  151. int[] lElements = new int[set.length];
  152. for (int i = 0; i < set.length; i++) // Erstes Array durchlaufen und prüfen ob Element im zweiten Array vorhanden
  153. {
  154. boolean lContains = false;
  155. for (int x = 0; x < pSet.set.length; x++)
  156. {
  157. if (set[i] == pSet.set[x])
  158. {
  159. lContains = true;
  160. break;
  161. }
  162. }
  163. if (!lContains) // Wenn nicht vorhanden, dann in neues Array reinkopieren und Zähler erhöhen
  164. {
  165. lElements[lCount] = set[i];
  166. lCount++;
  167. }
  168. }
  169. set = new int[lCount];
  170. for (int y = 0; y < lCount; y++) // set Array befüllen mit den neuen Array Daten
  171. {
  172. set[y] = lElements[y];
  173. }
  174. }
  175. }
  176.  
  177.  
  178.  
  179. und die 2. klasse
  180.  
  181.  
  182. /**
  183. Klasse Program
  184.  
  185. @author Lando Busch 4603944 Gruppe 4a
  186. */
  187.  
  188. public class Program {
  189.  
  190. public static void main(String[] args) {
  191. IntSet lNumber = new IntSet(512, 15 ,8 ,15, 512, 89, 15);
  192. System.out.println(lNumber.max()); // Gibt 512 aus
  193. System.out.println(lNumber.min()); // Gibt 8 aus
  194. System.out.println(lNumber.sum()); // Gibt 624 aus
  195. System.out.println(lNumber.avg()); // Gibt 156
  196. System.out.println("-------VereinigungsMenge------");
  197. vereinigungsMenge(lNumber);
  198. System.out.println("-------SchnittMenge------");
  199. schnittMenge(lNumber);
  200. System.out.println("-------entfernteMenge------");
  201. entferneMenge(lNumber);
  202. }
  203. private static void schnittMenge(IntSet pFirst) // Code für Schnittmenge ausgelagert
  204. {
  205. IntSet lAddNumbers = new IntSet(178,15,5, 89, 11 ,8);
  206. pFirst.retainAll(lAddNumbers);
  207. pFirst.print();
  208. }
  209. private static void vereinigungsMenge(IntSet pFirst) // Code für Vereinigungsmenge ausgelagert
  210. {
  211. IntSet lAddNumbers = new IntSet(512,178,89,15);
  212. pFirst.addAll(lAddNumbers);
  213. pFirst.print();
  214. }
  215. private static void entferneMenge(IntSet pFirst)
  216. {
  217. IntSet lEntferneMenge = new IntSet(15, 178, 2, 15, 89);
  218. pFirst.removeAll(lEntferneMenge);
  219. pFirst.print();
  220. }
  221.  
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement