17 00 01 Übungen zu Computeranwendung und Programmierung

Werbung
17 00 01
Übungen zu Computeranwendung und Programmierung
WS 13/14
Übungseinheit 18. - 22. November 2013
Aufgabe 1
Schreiben Sie eine Klasse EinfacheStatistik1, zur Berechnung von Mittelwert
und Varianz einer Menge von Gleitkommazahlen, die in einer ArrayList mit dem
Bezeichner werte gespeichert werden. Die Klasse soll über einen Konstruktor
public EinfacheStatistik1()
verfügen, der die ArrayList werte erzeugt. Die Methode
public void addWerte(double z)
fügt der ArrayList werte die Zahl z hinzu. Die Methode
public double getMittelwert()
soll den Mittelwert aller in werte gespeicherten Zahlen zurückgeben. Den Mittelwert z̄ der Zahlen z1 , z2 , . . . , zn berechnet man nach der Vorschrift
i=n
X
z̄ = (
zi )/n
i=1
Eine weitere Methode
public double getVarianz()
soll die Varianz v der Zahlen z1 , z2 , . . . , zn zurückgeben. Die Varianz v berechnet
man nach der Formel
i=n
X
1
v=
(zi − z̄)2
(n − 1) i=1
Aufgabe 2
Schreiben Sie eine Klasse Bruch, mit den Attributen zaehler und nenner sowie
einem Konstruktor
public Bruch(int z, int n)
der einen Bruch mit dem Zähler z und dem Nenner n erzeugt. Diese Klasse soll
auch über die üblichen set- und get-Methoden (getZaehler(), getNenner(),
. . .) verfügen, um auf zaehler und nenner zugreifen, sowie diese verändern zu
können.
Eine Methode
public void kuerzeBruch()
soll den Bruch kürzen, indem zaehler und nenner durch ihren größten gemeinsamen Teiler dividiert werden. Den größten gemeinsamen Teiler zweier positiver
ganzer Zahlen a und b soll die Methode
public int ggT(int a, int b)
liefern. Der größte gemeinsame Teiler soll nach dem klassischen Algorithmus von
Euklid berechnet werden. Das ist jenes Verfahren, das Sie in Mathematik I unter
dem Namen ’Euklidscher Algorithmus (Subtraktionsform)’ kennengelernt haben!
Aufgabe 3
Schreiben Sie eine Klasse Polynom zur Darstellung von Polynomen
p(x) = a0 xn + a1 xn−1 a2 xn−2 + . . . + an−1 x + an ,
indem die Koeffizienten a0 , a1 , . . . , an eines Polynoms in einer ArrayList<Double>
gespeichert werden. Die Klasse soll über einen Konstruktor
public Polynom()
verfügen, der ein Objekt erzeugt, das ein Polynom ohne Koeffizienten repräsentiert.
Die Methode
public void addKoeffizient(double a)
soll an ein Polynom mit den Koeffizienten a0 , a1 , . . . , an , einen Koeffizienten an+1
anfügen. Die Methode
public double gibWert(double x)
soll den Wert des Polynoms an der Stelle x nach der Horner-Regel berechnen und
zurückgeben. Zur Horner-Regel sei auf Mathematik I verwiesen! Die Methode
public Double maxKoeffizient()
soll den (einen) größten Koeffizienten des Polynoms zurückgeben. Hat ein Polynom keine Koeffizienten, so soll null zurückgegeben werden.
Aufgabe 4
Schreiben Sie eine Klasse Zimmer mit dem Konstruktor
public Zimmer(int zimmernummer, int anzahlBetten)
Dabei gibt anzahlBetten die Anzahl der Betten im Zimmer an.
Überlegen Sie, nachdem Sie die gesamte Aufgabenstellung verstanden haben, über
welche Methoden und Attribute diese Klasse verfügen sollte!
Schreiben Sie weiters eine Klasse Hotel mit dem Konstruktor
public Hotel(int anfangsnummer, int endnummer),
der ein Hotel mit Zimmern oder ohne Zimmer erzeugt. Ist anfangsnummer ≤
endnummer so legt der Konstruktor freie Zimmer mit Zimmernummern von anfangsnummer
bis inklusive endnummer an. Ist anfangsnummer > endnummer, so soll dieser Konstruktor ein Hotel ohne Zimmer anlegen! Entscheiden Sie mit einem Zufallsgenerator, ob die angelegten Zimmer jeweils Einzelzimmer, Doppelzimmer oder Dreibettzimmer sind.
Implementieren Sie auch die folgenden Methoden:
public ArrayList<Zimmer> getFreieDoppelzimmer()
liefert eine ArrayList mit allen freien Doppelzimmern, d.h. Zimmern mit genau zwei
Betten, welche nicht reserviert sind (die Größe der ArrayList soll genau der Anzahl
der freien Zimmer mit genau zwei Betten entsprechen).
public int fuegeZimmerHinzu(Zimmer[] neueZimmer)
erweitert das Hotel mit neuen Zimmern aus dem Array neueZimmer. Ein Zimmer
aus neueZimmer kann nur hinzugefügt werden, wenn die Zimmernummer noch
nicht im Hotel vergeben wurde. Die Methode liefert die Anzahl der hinzugefügten
Zimmer zurück.
public boolean reserviereZimmer(int zimmernummer)
reserviert das Zimmer mit der Nummer zimmernummer des Hotels. Wenn dieses
Zimmer belegt ist oder im Hotel nicht existiert, liefert die Methode false zurück.
Andernfalls wird das Zimmer reserviert und true zurückgegeben.
Aufgabe 5
Schreiben Sie eine Klasse Aktie mit dem Konstruktor
public Aktie(String bezeichnung)
bezeichnung enthält den Namen der AG, die diese Aktie ausgibt. Darüber hinaus soll jede Aktie über folgende Informationen verfügen: kurs gibt den aktuellen
Kurs an; anzahl gibt an, wie viele Aktien dieser bezeichnung vorhanden sind;
letzteWoche gibt an, um wieviel der Kurs der Aktie in der letzten Woche gefallen (letzteWoche < 0) oder gestiegen ist (letzteWoche > 0). Wird eine neue
Aktie angelegt, so soll kurs eine zufällig gewählte double-Zahl aus dem Intervall
[20, 150), anzahl eine zufällig gewählte int-Zahl aus dem Intervall [200, 800] und
letzteWoche eine zufällig gewählte double-Zahl aus dem Intervall [−5, 5) sein.
Überlegen Sie, nachdem Sie die gesamte Aufgabenstellung verstanden haben, über
welche Methoden diese Klasse verfügen sollte! (Die üblichen set- bzw. get-Methoden,
um auf die Attribute zugreifen zu können, müssen natürlich vorhanden sein!)
Schreiben Sie weiters eine Klasse Aktiendepot mit dem Konstruktor
public Aktiendepot(),
der ein Depot ohne Aktien erzeugt. Implementieren Sie auch die folgenden Methoden:
public void ergaenzeListe(Aktie[] neueAktien)
fügt Aktien aus dem Array neueAktien dem Depot hinzu, wenn diese Aktien im
Depot noch nicht vorhanden sind. (Hinweis: Zwei Aktien gelten als gleich, wenn
sie dieselbe bezeichnung haben!) Ist eine Aktie im Depot bereits vorhanden, so
sollen die Werte für letzteWoche und kurs aktualisiert werden. Außerdem wird
bei einer positiven Kursentwicklung anzahl entsprechend erhöht, andernfalls wird
die Aktienanzahl nicht verändert.
public ArrayList<Aktie> getHoherKursFallend(double hoch)
liefert eine ArrayList mit allen im Depot befindlichen Aktien mit einem Kurs ≥
hoch zurück, die während der letzten Woche eine negative Entwicklung nahmen.
Diese Aktien sollen darüber hinaus von der Methode getHoherKursFallend aus
dem Depot entfernt werden!
Aufgabe 6
Schreiben Sie eine Klasse Buch mit dem Konstruktor
public Buch(String autor, String titel, String isbn, int
anzahlSeiten, boolean taschenbuch, String sprache)
Dabei ist isbn die ISBN-Nummer des Buches; taschenbuch hat den Wert true,
falls das Buch ein Taschenbuch ist, ansonsten false.
Überlegen Sie, nachdem Sie die gesamte Aufgabenstellung verstanden haben, über
welche Methoden und Attribute diese Klasse verfügen sollte!
Schreiben Sie weiters eine Klasse Buecherverzeichnis mit dem Konstruktor
public Buecherverzeichnis(),
der ein Bücherverzeichnis ohne Bücher erzeugt. Implementieren Sie auch die folgenden Methoden:
public int gibAnzahlDeutscherTaschenbuecher()
liefert die Anzahl der deutschsprachigen Taschenbücher zurück (d.h. jene Bücher,
wo sprache den Wert “deutsch” und taschenbuch den Wert true haben).
public boolean addBuch(Buch einBuch)
fügt einBuch der Bücherliste des Bücherverzeichnisses hinzu, wenn dieses Buch
im Bücherverzeichnis noch nicht enthalten ist (liefert true wenn das Hinzufügen
erfolgreich ist, ansonsten false). Hinweis: Zwei Bücher gelten als gleich, wenn
sie dieselbe isbn haben! Falls das Buch in das Bücherverzeichnisses eingetragen
wird, dann soll auch ein Preis festgelegt werden. Der Preis besteht aus einem
Grundpreis plus einem Seitenpreis. Der Grundpreis soll zufällig zwischen [10, 30)
Euro festgelegt werden. Der Seitenpreis ist abhängig von der Anzahl der Seiten
und beträgt 0, 02 Euro/Seite.
public ArrayList<Buch> getTeureTaschenbuecher()
liefert eine ArrayList mit den im Bücherverzeichnis vorhandenen Taschenbüchern,
die mehr als 20 Euro kosten (die Größe der ArrayList soll genau der Anzahl der
Taschenbücher entsprechen, die mehr als 20 Euro kosten),
public Buch findeErstlingsUndLetztesWerk()
liefert das Buch zurück, welches ein Erstlingswerk und das einzige Buch eines Autors ist, d.h. der Autor hat genau ein Buch geschrieben. Gibt es mehrere Bücher,
die dieses Kriterium erfüllen, dann kann ein beliebiges Buch zurückgeliefert werden.
Herunterladen