Objekte und C++

Werbung
Vorsemesterkurs
Informatik
Übungsaufgaben
Tag 6b: Objekte und C++
Aufgabe 1: Polynome als Objekte
Ein Polynom in x ist ein Ausdruck der Form
An (x) = a0 + a1 x + . . . an xn ,
wobei man die Zahl n als Grad des Polynoms bezeichnet. Die Zahlen ai , i = 0, . . . , n heißen Koeffizienten. Wie das Beispiel
(a0 + a1 x) + b0 + b1 x + b2 x2
= (a0 + b0 ) + (a1 + b1 )x + b2 x2
(a0 + a1 x) · b0 + b1 x + b2 x2
= (a0 b0 ) + (a0 b1 + a1 b0 )x + (a0 b2 + a1 b1 )x2 + (a1 b2 )x3
verdeutlicht, kann man Polynome addieren und multiplizieren und erhält dann wieder ein Polynom
mit neuen Koeffzienten.
(a) Wir wollen Polynome nun als Objekte behandeln. Dazu sei uns die folgende Header-Datei
Polynom.h vorgegeben:
1
2
#ifndef POLYNOM_H_
#define POLYNOM_H_
3
4
5
6
7
class Polynom {
private:
unsigned int N;
double *coeff;
// Grad des Polynoms
// Koeffizienten
8
9
10
11
12
13
14
15
16
public:
// Erzeugt das Nullpolynom vom Grad n
Polynom(unsigned int n)
: N(n), coeff(new double[n+1])
{
for (unsigned int i=0; i<=N; ++i)
(*this)[i] = 0.0;
};
17
18
19
// TODO: Kopierkonstruktor
Polynom(const Polynom &p);
20
21
22
23
// Destruktor
~Polynom()
{ delete[] coeff;}
24
25
26
27
// Liefert Referenz auf n-ten Koeffizienten (veraenderbar)
double& operator[](unsigned int n)
{ return coeff[n]; }
28
29
30
31
// Liefert n-ten Koeffizienten (konstant)
double operator[](unsigned int n) const
{ return coeff[n]; }
32
Seite 1
// Liefert Grad des Polynoms
unsigned int grad() const
{ return N; }
33
34
35
36
// TODO: Werte ’this’ an Stelle x aus
double auswertung(double x) const;
37
38
39
// TODO: Liefert r := ’this’ + q zurueck
Polynom addiere(const Polynom &q) const;
40
41
42
// TODO: Liefert r := ’this’ * q zurueck
Polynom multipliziere(const Polynom &q) const;
43
44
45
// TODO: Ausgabe (nach cout): p_0 + p_1*X + ... p_N*X^N
void ausgabe() const;
46
47
48
// TODO: Prueft, ob Polynome gleich sind
bool ist_gleich(const Polynom &q) const;
49
50
51
};
52
53
#endif /* POLYNOM_H_ */
In der obigen Datei fehlen sechs Methoden. Diese sind mit TODO gekennzeichnet, außerdem fehlt
die Funktionsdefinition {...}. Implementiere diese in einer Datei Polynom.cpp.
(b) Teste die Methoden selbstgewählten Beispielen.
Hilfestellung: Für zwei allgemeine Polynome
An (x) = a0 + a1 x + . . . an xn ,
Bm (x) = b0 + b1 x + . . . bm xm
lassen sich die Summe Cp = An + Bm bzw. das Produkt Dp = An · Bm wie folgt berechnen:
Cp (x) := (An + Bm )(x)
Dp (x) := (An · Bm )(x)
=
=
p
X
ck x k ,
mit
p := max (m,n),
dk xk ,
mit
p := m + n,
k=0
p
X
k=0
ck = (ak + bk )
dk =
X
ai bj
i+j=k
(2)
(Nicht vorhandene Koeffizienten werden dabei durch 0 ersetzt.)
Aufgabe 2: Weitere Aufgaben
Bearbeite eine beliebige Aufgabe von einem der vorherigen Aufgebenblätter!
Viel Erfolg!
Seite 2
Herunterladen