3. Ubung Informatik B Klaus Kriegel Aufgabe 1: SS 04 Abgabe: 14.5.2004 Typumwandlungen (2 + 2 + 2 Punkte) Einzelabgabe f ur Bioinformatiker!! Zu den altesten kryptographischen Methoden zahlen die sogenannte Casar-Chiren. Dabei wird jeder Buchstabe des Alphabets zyklisch um 3 Stellen nach hinten verschoben, d.h. aus a wird d aus b wird e, : : : aus x wird a, aus y wird b und aus z wird c. Wir verallgemeinern das dahin gehend, dass um k Stellen verschoben wird. Zur Berechnung sollten die Typumwandlungen von char in int und zuruck verwendet werden. Wir beschranken uns auf Kleinbuchstaben, die dem Zahlenbereich von 97 (fur a) bis 122 (fur z) entsprechen. a) Denieren Sie eine Funktion public char caesar(char c, int k) zur Umwandlung einzelner Buchstaben (Verwenden Sie die Modulo Funktion %, es gibt 26 Buchstaben). b) Lesen Sie einen String s und die Zahl k von der Kommandozeile ein, wandeln Sie die Zeichen des Strings buchstabenweise um und geben Sie den umgewandelten String aus. Die Lange von s erhalten Sie mit s.length() und das i-te Zeichen mit s.charAt(i). c) Schreiben Sie eine Methode zur Dechirierung und testen Sie diese an selbst gewahlten Beispielen. Aufgabe 2: Felder (4 Punkte) a) Schreiben Sie ein Java Programm Quadratmatrix.java, das bei Ubergabe von zwei positiven ganzen Zahlen n und k ein quadratisches Schema der Groe n n zeilenweise mit der sich zyklisch wiederholenden Folge 0; 1; 2; : : : ; k 1; 0; 1; : : : fullt. Geben Sie die transponierte Matrix (bei der die Spalten zu Zeilen werden) auf den Bildschirm aus. 00 1 2 31 00 4 2 01 Hier das Beispiel fur Das ist die B BB 1 5 3 1 C n = 4 und k = 6: 4 5 0 1C B C transponierte @ 2 3 4 5 A Matrix: @2 0 4 2C A Verwenden Sie intern ein zweidimensionales Feld. 0 1 2 3 3 1 5 3 Aufgabe 3: Klassen (2 + 2 + 2 Punkte) Wie Sie aus der Schulmathematik wissen, ist ein Polynom ein Ausdruck der Form 0 1 2 n p(x) = a0 x + a1 x + a2 x + : : : + an x oder k urzer p(x) = a0 + a1 x + a2 x2 + : : : + an xn . a) Entwerfen Sie eine Klasse Polynom mit einem Feld coef von double-Werten zur Speicherung der KoeÆzienten a0 ; a1 : : : an . Implementieren Sie eine Methode, die den Wert des Polynoms an der Stelle r bestimmt: public double eval(double r) b) Fugen Sie den folgenden Konstruktor in Ihre Klasse ein: public Polynom (double[] a) f this.coef = a;g Implementieren Sie eine Methode main, die eine KoeÆzientenfolge beliebiger Lange von der Kommandozeile ubernimmt und das entsprechende Polynom erzeugt. Geben Sie die Werte an den Stellen 0 und 1 aus. c) Implementieren Sie eine Methode public void zeroAt0and1() die nur die ersten zwei KoeÆzienten andert und dabei ein Polynom erzeugt, dass an den Stellen 0 und 1 Nullstellen hat.