Universität Düsseldorf Mathematisch-Naturwissenschaftliche Fakultät Institut für Informatik Tobias Witt Java Blockkurs im Sommersemester 2015 Übungsblatt 1 Beachten Sie, dass sie die Aufgaben selber lösen sollten. Java-Interne Hilfsfunktionen und Klassen wie zum Beispiel Arrays sollten daher nicht verwendet werden. Aufgabe 1 Distanz Implementieren Sie eine Methode int distance(int a, int b), die zwei Integer als Parameter bekommt und deren Abstand berechnet. Das Programm soll die beiden Parameter als Kommandozeilen-Parameter entgegennehmen. $ # $ # java Distance 42 5 37 java Distance 5 11 6 Aufgabe 2 Kreuzprodukt Implementieren Sie eine Methode int[] crossproduct(int[] a, int[] b), die zwei Vektoren als Integer-Arrays als Parameter bekommt und deren Kreuzprodukt berechnet. Die Übergabe der Parameter an das Programm sollen Sie sich selbst überlegen. Denkbar wären auch hier Kommandozeilenparameter: $ java CrossProduct 1 -5 2 2 0 3 # (-15 1 10) Aufgabe 3 String-Suche Implementieren Sie eine Methode int search(String[] array, String string), die einen String-Array und einen String bekommt und diesen String im Array suchen soll. Wenn der String nicht gefunden wird, soll die Methode -1 zurückgeben. $ java Search foo bar baz biz buzz baz # 2 1 $ java Search foo bar baz biz buzz bogus # -1 Aufgabe 4 Palindrom Implementieren Sie eine Methode boolean isPalindrom(String string), die einen String als Parameter bekommt und prüft, ob dieser String ein Palindrom1 ist. $ # $ # java Palindrom otto "otto" ist ein Palindrom java Palindrom birne "birne" ist kein Palindrom Aufgabe 5 Euklidischer Algorithmus Implementieren Sie eine Methode int ggT(int a, int b), die mit Hilfe des Euklidischen Algorithmus den größten gemeinsamen Teiler zweier Zahlen bestimmt. $ # $ # java GGT 8 12 4 java GGT 16 14 2 Aufgabe 6 Nullstellen Implementieren Sie eine Methode double newton(int x), die ausgehend von einem Startwert versucht mittels des Newton-Verfahrens eine Nullstelle der Funktion f ( x ) = x4 + 3 ∗ x3 + 0.5 ∗ x − 1 zu bestimmen. $ java Newton 1 # 0.5826573119800097 Bonus: • Finden Sie alle Nullstellen. • Finden Sie Nullstellen für beliebige Funktionen. Die Koeffizienten für das Polynom können auf der Kommandozeile angegeben werden. $ java Newton 1 3 0 0.5 -1 1 # 0.5826573119800097 1 http://de.wikipedia.org/wiki/Palindrom 2 Aufgabe 7 Arrays In dieser Aufgabe ist es wichtig, dass der Original-Array nicht verändert wird. a. Implementieren Sie eine Methode int[] reverse(int[] array), die einen Array aus Integern als Parameter nimmt und einen Array in umgekehrter Element-Reihenfolge zurückgibt. b. Implementierne Sie eine Methode int[] filterEven(int[] array), die einen Array aus Integern als Parameter nimmt und einen Array mit allen geraden Zahlen zurückgibt, oder einen leeren Array, falls es keine geraden Zahlen gibt. Aufgabe 8 Bubblesort Implementieren Sie eine Methode int[] bubblesort(int[] array), die einen Array aus Integern als Parameter nimmt und eine sortierte Kopie zurückgibt. Der implementierte Sortieralgorithmus soll Bubblesort sein. Aufgabe 9 4 gewinnt Implementieren Sie eine Methode boolean checkWin(char[][] board), die einen zwei-Dimensionalen Array, der die Zeichen r und g enthält, als Parameter nimmt und feststellt, ob eine der beiden Zeichen 4 mal hintereinander vertikal, horizontal oder diagonal enthalten sind. Aufgabe 10 Arrays II Implementieren Sie eine Methode void random(char a, char b, char c, char d), die 4 chars als Parameter nimmt und diese in zufälliger Reihenfolge ausgibt. a. Lösen Sie diese Aufgabe ohne die Verwendung eines Arrays b. Lösen Sie diese Aufgabe unter Zuhilfenahme eines Arrays. 3