From 25f48e7116b6ba446b3a8bf449e4e738d535ee59 Mon Sep 17 00:00:00 2001 From: q <@> Date: Fri, 21 Apr 2023 15:34:51 +0200 Subject: [PATCH] erhfejhgfjhwvqfjhverafjvjh4q5vhjr5v --- Array.java | 28 ++++++ ArrayExperimente.java | 176 ++++++++++++++++++++++++++++++++ ArrayExperimenteTest.java | 205 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 409 insertions(+) create mode 100644 Array.java create mode 100644 ArrayExperimente.java create mode 100644 ArrayExperimenteTest.java diff --git a/Array.java b/Array.java new file mode 100644 index 0000000..2b7d131 --- /dev/null +++ b/Array.java @@ -0,0 +1,28 @@ + +/** + * Beschreiben Sie hier die Klasse Array. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class Array +{ + public static void test() + { + int[] array = new int[10]; + array[1]= 3; + array[2]= 25; + array[3]= 40; + array[4]= 50; + array[6]= 1000; + array[7]= 2000; + array[8]= 2200; + array[9]= 2222; + System.out.println(array[1]); + for(int i= 0;i< array.length;i++) + { + System.out.println(array[i]); + } + } + +} diff --git a/ArrayExperimente.java b/ArrayExperimente.java new file mode 100644 index 0000000..54f8523 --- /dev/null +++ b/ArrayExperimente.java @@ -0,0 +1,176 @@ + +/** + * Uebungen mit Arrays. + * + * Verschiedene Methoden, die einfache Operationen auf int-Arrays durchfuehren. + * + * Du kannst deine Loesungen mit der beigefuegten Testklasse automatisch + * ueberpruefen + * - Klicke dazu im Hauptfenster auf Werkzeuge -> Testen -> Tests starten + * - Sobald du glaubst, eine Funktion fertig programmiert zu haben, + * startest du die Tests und ueberzeugst dich im Testergebnisfenster, + * dass der Test fuer diese Funktion erfolgreich durchgelaufen ist. + * - Falls er fehlschlaegt, kannst du dort auf den entsprechenden Test klicken + * und nachschauen, was genau fehlgeschlagen ist. + * + */ +public class ArrayExperimente +{ + public static int beispiel[]= new int[] {1, 3, 4, -13, 0, 70, -111}; + public static int nochnArray[]= new int[] {20,21,22,23,24,25,26}; + + /** + * Gibt das uebergebene Array auf der Konsole aus. + * @param array, das ausgegeben werden soll. + */ + public static void arrayAusgeben(int[] array) + { + for(int i=0; i<array.length; i++) + { + System.out.println(array[i]); + } + } + + /** + * Ermittelt, ob ein Wert im Array vorkommt, d.h. ob + * eines der Arrayelemente diesen Wert hat. + * @param gesucht zu suchender Wert. + * @param array Array, in dem gesucht wird. + * @returns ob gesucht im Array vorkommt. + */ + public static boolean istEnthalten(int gesucht, int[] array) + { + for(int i=0; i<array.length; i++) + { + if(array[i] == gesucht) + { + return true; + } + + + } + return false; + } + + /** + * Ermittelt, an welchem Index im Array der Wert "gesucht" vorkommt. + * @param gesucht Wert, nach dem im Array gesucht wird. + * @param array Array, in dem gesucht wird. + * @returns den Index, an dem gesucht im Array vorkommt; -1, falls es + * nicht vorkommt. + */ + public static int indexVon(int gesucht, int[] array) + { + // TODO... + + // das return steht hier nur, damit der Compiler nicht meckert: + return -3245646; + } + + + + /** + * Ermittelt den Wert des groessten im Array enthaltenen Elements. + * @param array Array, in dem gesucht wird. Es darf + * nicht leer sein. + * @returns Den groessten vorkommenden Wert. + */ + public static int maxWert(int[] array) + { + // TODO... + + // das return steht hier nur, damit der Compiler nicht meckert: + return -346; + } + + /** + * Ermittelt den Index des groessten im Array enthaltenen Elements. + * @param array Array, in dem gesucht wird. + * @returns Den Index des groessten vorkommenden Werts. + */ + public static int maxIndex(int[] array) + { + // TODO... + + // das return steht hier nur, damit der Compiler nicht meckert: + return -324688; + + } + + /** + * Ermittelt den Index des groessten im Array enthaltenen Elements. + * @param array Array, in dem gesucht wird. + * @returns Den Index des groessten vorkommenden Werts. + */ + public static int maxIndexKuerzer(int[] aray) + { + // TODO: Formuliere diese Funktion als Einzeiler, indem du + // Funktionen, die du oben schon geschrieben hast, geschickt aufrufst. + // Diese Variante einfacher zu formulieren als mit einer Schleife + // (braucht allerdings mehr Rechenschritte). + + // das return steht hier nur, damit der Compiler nicht meckert: + return -3244786; + } + + /** + * Ermittelt die Summe ueber alle Arrayelemente. + * @param array Array, das aufaddiert wird. + * @returns Summe aller Arrayelemente. + */ + public static int querSumme(int[] array) + { + // TODO... + + // das return steht hier nur, damit der Compiler nicht meckert: + return -32460; + } + + /** + * Die Funktion erhoeht im urspruenglichen Array jeden Eintrag um "zuschlag". + * Es wird kein neues Array angelegt. + * @param array Zu manipulierendes Array. Es darf nicht leer sein. + * @param zuschlag diese Zahl wird zu jedem Arrayeintrag dazuaddiert. + */ + public static void addiereJeweilsD(int[] array, int zuschlag) + { + // TODO... + } + + + + /** + * Erstellt ein neues Array, in dem die Elemente des + * urspruenglichen Array in der umgekehrten Reihenfolge drin sind. + * @param array urspruengliches Array, darf nicht null sein + * @returns neues Array mit umgekehrter Reihenfolge. + */ + public static int[] arrayUmdrehen(int[] array) + { + // fuer diese Funktion darf man ein neues Array anlegen, das + // die Eintraege von wendeArray in umgedrehter Reihenfolge enthaelt. + + // TODO... + + // das return steht hier nur, damit der Compiler nicht meckert: + return null; + + + } + + /** + * Dreht im bestehenden Array dessen Elemente in + * die umgekehrte Reihenfolge. Man sagt, die Funktion bearbeitet + * das Array "in place". + * @param wendeArray urspruengliches Array + */ + public static void arrayUmdrehenInPlace(int[] array) + { + // Diese Funktion loest die gleiche Aufgabe wie die obere, darf + // dafuer aber KEIN zusaetzliches Array benutzen, sondern muss + // (bis auf einzelne int-Variable) im wendeArray arbeiten. + // TODO... + } + + +} diff --git a/ArrayExperimenteTest.java b/ArrayExperimenteTest.java new file mode 100644 index 0000000..9e39250 --- /dev/null +++ b/ArrayExperimenteTest.java @@ -0,0 +1,205 @@ +import static org.junit.Assert.*; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import java.util.Arrays; + +/** + * The test class ArrayExperimenteTest. + * + * @author Urs Lautebach + * @version 2017-10 + */ +public class ArrayExperimenteTest +{ + /** + * Sets up the test fixture. + * + * Called before every test case method. + */ + @Before + public void setUp() + { + } + + /** + * Tears down the test fixture. + * + * Called after every test case method. + */ + @After + public void tearDown() + { + } + + @Test + public void testistEnthalten() + { + int[] testArray = new int[] {1, -43, 1000, 1000, 3, 4, 13, 1000, 70, -41}; + assertTrue(ArrayExperimente.istEnthalten(1000, testArray)); + assertTrue(ArrayExperimente.istEnthalten(-41, testArray)); + assertTrue(ArrayExperimente.istEnthalten(1, testArray)); + assertFalse(ArrayExperimente.istEnthalten(77, testArray)); + + testArray = new int[] {66}; + assertTrue(ArrayExperimente.istEnthalten(66, testArray)); + assertFalse(ArrayExperimente.istEnthalten(77, testArray)); + + testArray = new int[] {}; + assertFalse(ArrayExperimente.istEnthalten(77, testArray)); + } + + @Test + public void testindexVon() + { + int[] testArray = new int[] {1, -43, 1000, 1000, 3, 4, 13, 1000, 70, -41}; + assertEquals(0, ArrayExperimente.indexVon(1, testArray)); + assertEquals(1, ArrayExperimente.indexVon(-43, testArray)); + assertEquals(9, ArrayExperimente.indexVon(-41, testArray)); + assertEquals(-1, ArrayExperimente.indexVon(1231, testArray)); + + testArray = new int[] {66}; + assertEquals(-1, ArrayExperimente.indexVon(1231, testArray)); + assertEquals(0, ArrayExperimente.indexVon(66, testArray)); + + testArray = new int[] {}; + assertEquals(-1, ArrayExperimente.indexVon(1231, testArray)); + } + + + + @Test + public void testmaxWert() + { + int[] testArray = new int[] {1, -43, 1000, 1000, 3, 4, 13, 1000, 70, -41}; + assertEquals(1000, ArrayExperimente.maxWert(testArray)); + + testArray = new int[] {0, -43, -41}; + assertEquals(0, ArrayExperimente.maxWert(testArray)); + + testArray = new int[] {-43, -41}; + assertEquals(-41, ArrayExperimente.maxWert(testArray)); + + testArray = new int[] {66}; + assertEquals(66, ArrayExperimente.maxWert(testArray)); + } + + @Test + public void testmaxIndex() + { + int[] testArray = new int[] {1, -43, 1000, 3, 4, 13, 70, -41}; + assertEquals(2, ArrayExperimente.maxIndex(testArray)); + + testArray = new int[] {1, -43, 1000, 3, 4, 13, 70, -41, 5367}; + assertEquals(8, ArrayExperimente.maxIndex(testArray)); + + testArray = new int[] {0, -43, -41}; + assertEquals(0, ArrayExperimente.maxIndex(testArray)); + + testArray = new int[] {-43, -41}; + assertEquals(1, ArrayExperimente.maxIndex(testArray)); + + testArray = new int[] {-41}; + assertEquals(0, ArrayExperimente.maxIndex(testArray)); + } + + @Test + public void testquersumme() + { + int[] testArray = new int[] {1, -43, 3, 4, 13, 70, -41}; + assertEquals(7, ArrayExperimente.querSumme(testArray)); + + testArray = new int[] {0, -43, -41}; + assertEquals(-84, ArrayExperimente.querSumme(testArray)); + + // einelementiges Array: + testArray = new int[] {51}; + assertEquals(51, ArrayExperimente.querSumme(testArray)); + } + + @Test + public void testaddiereJeweilsD() + { + int[] arrayVorher = new int[] {1, -43, 3, 4, 13, 70, -41}; + int[] testArray = new int[] {1, -43, 3, 4, 13, 70, -41}; + + int dazu = 1; + ArrayExperimente.addiereJeweilsD(testArray, dazu); + + int idx = 0; + while(idx < testArray.length) + { + if( testArray[idx] != arrayVorher[idx] + dazu ) + { + fail("Arrays unterscheiden sich an der Position " + idx + "!"); + } + idx ++ ; + } + } + + + + @Test + public void testarrayUmdrehen() + { + // Array mit ungerader Laenge: + int[] drehmich = new int[] { 1, -43, 3, 4, 13, 70, -41 }; + int[] rumgedreht = ArrayExperimente.arrayUmdrehen(drehmich); + assertEquals(drehmich.length, rumgedreht.length); + + int idx = 0; + while(idx < drehmich.length) { + if( rumgedreht[idx] != drehmich[ rumgedreht.length - 1 - idx ] ) { + fail("Ergebnisarray falsch bei Index " + idx + "!"); + } + idx ++ ; + } + + // Array mit gerader Laenge: + drehmich = new int[] { 1, -43, 3, 4, 70, -41 }; + rumgedreht = ArrayExperimente.arrayUmdrehen(drehmich); + assertEquals(drehmich.length, rumgedreht.length); + + idx = 0; + while(idx < drehmich.length) { + if( rumgedreht[idx] != drehmich[ rumgedreht.length - 1 - idx ] ) { + fail("Ergebnisarray falsch bei Index " + idx + "!"); + } + idx ++ ; + } + + // Array mit Laenge 1: + drehmich = new int[] { 1 }; + rumgedreht = ArrayExperimente.arrayUmdrehen(drehmich); + assertEquals(drehmich.length, rumgedreht.length); + + idx = 0; + while(idx < drehmich.length) { + if( rumgedreht[idx] != drehmich[ rumgedreht.length - 1 - idx ] ) { + fail("Ergebnisarray falsch bei Index " + idx + "!"); + } + idx ++ ; + } + } + + + + private boolean[][] binaer = + { + { false, false, false, false, false, false, false, false } , /* 0 */ + { false, true , true , true , true , true , true , true } , /* 127 */ + { false, false, false, false, false, true , true , true } , /* 7 */ + { false, true , true , false, false, false, false, false } , /* 96 */ + { false, false, true , false, false, true , false, false } , /* 36 */ + { false, false, false, false, false, true , false, true } , /* 5 */ + { false, false, false, false, false, true , false, false } , /* 4 */ + { false, false, false, true , false, false, false, true } , /* 17 */ + { false, true , false, false, false, false, false, true } , /* 65 */ + { false, false, false, false, false, false, false, true } , /* 1 */ + + }; + + private byte[] dezimal = { 0, 127, 7, 96, 36, 5, 4, 17, 65, 1}; + + +}