Weil besser als gut!

Klausur mit Lösung Prog2Inhaltsverzeichnis Aufgaben als PDFHier könnt ihr euch die Klausur als PDF runterladen. AllgemeinesPrüfungsnummer: 720835, 730835, 721835, 731835, 741835
Zu den KlausurenAlle Aufgaben sind mit der Sprache C++ zu lösen, andere Lösungen werden nicht gewertet. Außer der Klasse string dürfen keine vordefinierten Klassen verwendet werden. Vollständige Programme (mit allen includes, usings, namespaces, main-function etc.) sind nur dann zu erstellen, wenn dies ausdrücklich in der Aufgabenstellung gefordert ist. Alle Methoden können inline definiert werden. Aufgabe 1Aufgabe 1: 25 Punkte Eine main-function erfragt zuerst: „Wieviele int-Zahlen wollen Sie eingegeben ?“ Anschließend wird eine entsprechende Anzahl Zahlen in ein dynamisches Array eingelesen, dann in genau dieser Folge wieder ausgegeben. Eine function void reverse(int*, int*); kehrt jetzt die Reihenfolge der Feldelemente um, was durch eine erneute Ausgabe aller Elemente verifiziert werden soll. Diese function reverse verwendet void tausche(int*, int*); zum Vertauschen zweier int-Werte. Selbstverständlich sollen Felder mit gerader und ungerader Elementanzahl korrekt behandelt werden. Schreiben Sie die functions main, reverse und tausche. Denken Sie an die Speicherfreigabe. Aufgabe 2Aufgabe 2: 30 Punkte Die Anweisungen: C++ Bruch a( 5 ); Bruch b( 1, 2 ); Bruch c( 1, 4 ); Bruch d( 115, -391 ); Bruch e( -37*234, -37*432 ); cout << a << b << c << d << e << endl; cout << b + c << endl; cout << 8 + e << endl; cout << d * e << endl; erzeugen die Ausgabe: C++ 5/1 1/2 1/4 -5/17 13/24 3/4 205/24 -65/408 Erstellen Sie die Klasse Bruch vollständig, so dass:
Aufgabe 3Aufgabe 3: 25 Punkte Gegeben sei folgendes Programm: C++ void main() { Konto tick( "Tick", 50.0, 10.0 ); tick.zeigDich(); tick.einzahlen( 10.0 ); tick.auszahlen( 71.0 ); tick.einzahlen( 5.0 ); tick.zeigDich(); Konto dagobert( "Dagobert", 0.0, 1.0E8 ); for(double d = 1.0; d <= 1000.0; d = d + 1.0) dagobert.einzahlen( d ); dagobert.zeigDich(); } Es erzeugt die Ausgabe: C++ Konto "Tick": Kontostand: 50.00 Euro Dispositionskredit: 10 Euro Transaktionen: 0 Tick-auszahlen meldet: Kreditlimit erreicht, 70 Euro ausgezahlt. Konto "Tick": Kontostand: -5.00 Euro Dispositionskredit: 10 Euro Transaktionen: 3 Konto "Dagobert": Kontostand: 500500.00 Euro Dispositionskredit: 100000000 Euro Transaktionen: 1000 Implementieren Sie die Klasse Konto vollständig. Treffen Sie alle Vorkehrungen, um stets
einen korrekten Kontozustand zu gewährleisten.
Hinweis:
Aufgabe 4Aufgabe 4: 40 Punkte
Ein Bunker besteht aus n Silos (im Bild ist n=7), die von einem verschiebbaren Portalkran
befüllt oder entleert werden können. Die Operationen sind:
Definieren Sie eine Klasse Bunker, die auch erlaubt:
Diese Anweisungen: C++ const int intBunkerLaenge = 5; int initialerIntFuellWert = 0; int maximalerIntFuellWert = 10; Bunker<int, intBunkerLaenge> int5Bunker(initialerIntFuellWert, maximalerIntFuellWert ); int5Bunker.fuell(4); int5Bunker.fuell(1); int5Bunker.nachRechts(2); int5Bunker.fuell(20); int5Bunker.nachRechts(2); int5Bunker.fuell(1); int5Bunker.nachLinks(42); int temp = int5Bunker.gibAlles(); int5Bunker.nachRechts(1); int5Bunker.fuell(temp); int5Bunker.coutAlles(); cout << "---------------------------" << endl; const int strBunkerLaenge = 3; string initialerStrFuellWert = ""; string maximalerStrFuellWert = "Z_DerMaximaleFuellString"; Bunker<string, strBunkerLaenge> str3Bunker(initialerStrFuellWert, maximalerStrFuellWert ); str3Bunker.fuell("Moi"); str3Bunker.fuell("n"); str3Bunker.nachRechts(1); str3Bunker.fuell("Flensburg"); str3Bunker.nachRechts(1); str3Bunker.fuell("Zickzack"); str3Bunker.coutAlles(); erzeugen dann diese Ausgabe: C++ 1: 0 2: 5 3: 10 4: 0 5: 1 --------------------------- 1: Moin 2: Flensburg 3: Z_DerMaximaleFuellString |
Zahlen & Daten
Publish |