Aufgabenblatt 3

Werbung
Aufgaben zur Veranstaltung
Programmieren in Java / IT-Grundlagen, WS 2016/2017
H. Pflug, M. Nellesen
FH Aachen, Campus Jülich; IT Center, RWTH Aachen
Übungsblatt 3
26.10./27.10.2016
Präsenzaufgaben
Die Aufgaben werden von Ihnen am Ende der Übung vorgestellt.
Fakultät
Programmieren Sie die Klasse
public class Fakultaet
die verschiedene Funktionen zur Berechnung von Fakultäten enthält. Dazu sollen zunächst
die folgenden Funktionen implementiert werden:
public static int berechneFakultaetInteger(int n)
//berechnet zu dem uebergebenen n die Fakultaet, zur Berechnungen
//wird eine Variable vom Typ int verwendet
public static long berechneFakultaetLong(int n)
//berechnet zu dem uebergebenen n die Fakultaet, zur Berechnungen
//wird eine Variable vom Typ long verwendet
public static void teste(int n)
//ruft die verschiedenen Funktionen zur Berechnung der Fakultaeten
//auf und gibt das Ergebnis der einzelnen Berechnungen sowie die
//uebergebene Zahl auf der Konsole aus
Testen Sie Ihre Funktionen mit den Werten 5,10,20,50,100 und 1000. Welche
Beobachtungen können Sie bei der Berechnung der Fakultäten machen? Wodurch lässt sich
dieses Verhalten erklären?
Schreiben Sie außerdem die Funktionen
public static int getMaxIntFakultaet()
public static int getMaxLongFakultaet()
Die Funktionen berechnen den maximalen Wert, dessen Fakultät noch in eine int- bzw. longVariable passt.
Um auch größere Fakultäten berechnen zu können, erweitern Sie ihr Programm um die
Methode:
public static BigInteger berechneFakultaetBigInteger(int n)
//berechnet zu dem uebergebenen n die Fakultaet, zur Berechnungen
//wird die Klasse BigInteger verwendet
Die Klasse BigInteger ermöglicht die Berechnung von großen Fakultäten. Die passenden
Konstruktoren und Methoden können Sie in der API finden. Fügen Sie die neue Methode zur
Berechnung der Testfälle hinzu und vergleichen Sie die Ergebnisse.
Aufgabenblatt Programmieren in Java / IT-Grundlagen
WS 16/17; H. Pflug, M. Nellesen
Vergleichswerte:
5!
= 120
10! = 3628800
20! = 2432902008176640000
50! = 30414093201713378043612608166064768844377641568960512000000000000
HashMaps
In vielen Fachbüchern findet man am Ende ein Sachwortverzeichnis, auch unter der
Bezeichnung Index bekannt. Ein Index besteht aus einer Übersicht aller wichtigen Begriffe im
Buch und den Seitenzahlen, auf denen sich die Begriffe finden lassen. Auf dem folgenden
Bild sehen Sie ein Beispiel für einen Index:
Implementieren Sie eine Klasse Index, die ein solches Sachwortverzeichnis repräsentiert.
Die Klasse soll über folgende Konstruktoren und Methoden verfügen:
a) Default-Konstruktor, der einen leeren Index erzeugt.
b) Copy-Konstruktor, durch den der neue Index alle Einträge erhält, die der als
Parameter übergebene Index zum Zeitpunkt des Aufrufs besitzt. Achten Sie hierbei
auf die Datenkapselung!
c) eine Methode begriffHinzufuegen, die als Parameter einen Begriff (String) und
eine Seitenzahl (int) übergeben bekommt. Begriff und Seitenzahlen sollen durch die
Methode im Index vermerkt werden. Beachten Sie: In einem Index dürfen keine
doppelten Begriffe enthalten sein, ebenso keine doppelten Seitenzahlen zu einem
Begriff.
d) eine toString-Methode, die den aktuellen Status des Index zurückgibt. Der Status soll
wie folgt aufgebaut sein:
<begriff1>: <seite1>, <seite2>, …, <seiteN>
<begriff2>: <seite1>, <seite2>, …, <seiteN>
…
2
Aufgabenblatt Programmieren in Java / IT-Grundlagen
WS 16/17; H. Pflug, M. Nellesen
Testen Sie Ihr Programm mit folgendem Beispiel:
public class IndexTest {
public static void main(String[] args) {
Index index = new Index();
index.hinzufuegen("boolean", 1);
index.hinzufuegen("boolean", 15);
index.hinzufuegen("boolean", 3);
index.hinzufuegen("boolean", 15);
Index index2 = new Index(index);
index.hinzufuegen("if", 45);
index.hinzufuegen("if", 2);
index.hinzufuegen("if", 10);
index.hinzufuegen("if", 45);
System.out.println(("index");
System.out.println(index);
System.out.println(("index2");
System.out.println(index2);
}
}
Es sollte folgende Ausgabe zu sehen sein:
index
boolean: 1, 15, 3
if: 45, 2, 10
index2
boolean: 1, 15, 3
Größte Teilfolge
Programmieren Sie eine Funktion
public static double[] getMaxTeilfolge(double[] x)
Diese Funktion erhält eine Folge x als Übergabeparameter und gibt die Teilfolge mit der
größten Summe zurück. Dabei muss die Teilfolge zusammenhängend sein, d.h. Ihre
Elemente müssen im Feld direkt aufeinander folgen.
Beispiel:
Für x= {-2,3,1,-5,3,1,-2,3,4,1,-2,-3,4} wäre das Ergebnis {3,1,-2,3,4,1}. Die Summe dieser
Teilfolge (10) wird von keiner anderen Teilfolge übertroffen.
3
Herunterladen