From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- Bachelor/Prog2/Prakt1/index.htm | 186 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 Bachelor/Prog2/Prakt1/index.htm (limited to 'Bachelor/Prog2/Prakt1/index.htm') diff --git a/Bachelor/Prog2/Prakt1/index.htm b/Bachelor/Prog2/Prakt1/index.htm new file mode 100644 index 0000000..4f896eb --- /dev/null +++ b/Bachelor/Prog2/Prakt1/index.htm @@ -0,0 +1,186 @@ + + + + + Praktikum 1 + +  + + + + + + + + + + +
 
FH Darmstadt  +
FB Informatik  +
Prof.Dr. H.P.Weber
+
Programmieren II +
Praktikum
+
+
1
+
+ +
+ + + + + +
Ziel: +Sie sollen die in Programmieren I erlernten Sprachelemente von C++ +(insbesondere Klassendefinition und Überladen von Operatoren) anwenden können. +
+ +
+
+ + + + + + + + + + + + +
+

1    MasterMind-Spiel

+Realisieren Sie eine objektorientierte Version des in den 70er-Jahren +des letzten Jahrhunderts beliebten Spieles +MasterMind.  +
    +
  • +In der Version für diese Aufgabe 'denkt sich' der Computer eine +vierstellige Zahl aus den Ziffern 1 bis 6 (Methode +makeDigitsToGuess im Klassendiagramm unten). Der Mensch rät sie. Jeden +Rateversuch bewertet der Computer, indem er angibt, wieviele Ziffern an der richtigen Stelle +genannt worden sind (locationRight) und wieviele sonst noch richtig genannt wurden, ohne +an der richtigen Stelle zu stehen (locationWrong). +
  • +
  • +Nehmen wir einmal an, der Computer hat sich die Zahl 1434 ausgedacht. +Ein Dialog könnte dann so aussehen:  +
    Mensch rät:  3654  Computer-Antwort: +1 +an der richtigen Stelle; sonst 1 richtig +
    Mensch rät:  4444  Computer-Antwort: +2 +an der richtigen Stelle; sonst 0 richtig +
  • +
  • +Neben der Standardvariante, bei der der Computer eine zu ratende Zahl +vorgibt, soll auch ein Testmodus möglich sein, bei dem vom Tester +eine beliebige vierstellige Zahl aus den Ziffern 1 bis 6 eingegeben werden +kann, die dann zu 'raten' ist. + +Überlegen Sie sich vor der Realisierung Ihrer Lösung +eine Reihe von Testfällen mit den zugehörigen Computer-Antworten. +Welche Fälle sind besonders kritisch? Berücksichtigen Sie bei +der Implementierung Ihrer Lösung auch diese kritischen Testfälle. +
  • +
+
+
    +
  • +Realisieren Sie anhand des folgenden Klassendiagramms eine Klasse +MastermindDigits, die die oben geschilderten +Anforderungen erfüllt (achten Sie dabei auch auf möglichst weitgehende +'const-correctness').
  • +
  • +Der (Konvertierungs-)Konstruktor erzeugt +ein dynamisches int-Array digits, dessen Elemente die einzelnen Ziffern der +vierstelligen int-Zahl enthalten. Er übernimmt diese int-Zahl als Parameter und +speichert die einzelnen Ziffern der Zahl in die Elemente von digits.
  • +
  • + Realisieren Sie außerdem die drei weiteren +Methoden/Operatoren, die Bestandteil jeder Klasse sein sollten, deren Objekte +Zeiger auf dynamisch zugewiesenen Speicher enthalten. (Sie sind im + Klassendiagramm unten nicht aufgeführt!) Dies sollen aber die +einzigen Ergänzungen der öffentlichen Schnittstelle sein.
    +
  • +
  • +Schreiben Sie ein Anwendungsprogramm, das den oben beschriebenen +Spielablauf und den Testmodus als Konsolenanwendung realisiert. Das Anwendungsprogramm +soll mit nur einem MastermindDigits-Objekt +arbeiten, von dem aus die Methoden der Klasse aufgerufen werden. Die +Nutzereingabe und der Vergleich soll daher mit int-Zahlen und den entsprechenden +Typ-Konvertierungen der MastermindDigits-Klasse +arbeiten.
  • +
+
+ + + + + + + + + + +
+
MastermindDigits
+
-digits: int*
+ ++MastermindDigits(int)
++makeDigitsToGuess(): void
++locationRight(MastermindDigits&): int
++locationWrong(MastermindDigits): int
++operator int() +
+
+ +
+
+
+
+ + + +
+

+2    Lösungsalgorithmus für MasterMind-Spiel (fakultativ)

+ + + +
In Aufgabe 1 wird das Mastermind-Spiel  in der +Form realisiert, dass ein menschlicher Benutzer eine vom Computer ausgedachte +Zahl rät. Jetzt soll der Computer eine Zahl raten, die sich der menschliche +Benutzer ausgedacht hat. +
    +
  • +Versehen Sie Ihre Lösung mit +einer Konsolen-Ausgabe und -Eingabe, über die ihr Programm seinen Tip ausgibt +und ein menschlicher Gegenspieler die Zahl der Ziffern an der richtigen +Stelle und die sonst noch richtigen Ziffern eingeben kann. +
  • +
  • +Wieviele Versuche benötigt Ihr Programm im Mittel, um eine Zahl zu raten? +Um Ihre Lösung besser testen zu können, lassen Sie den Computer auch die Rolle +des Benutzers übernehmen: Er denkt sich eine Zahl aus, die er dann zu erraten +versucht. Bestimmen Sie, wieviele Versuche hierbei im Mittel bei z.B. 10000 +Spielen gebraucht werden und wieviele Versuche ihr Programm dabei maximal +braucht.
  • +
  • + Anzustreben ist eine Lösung, die jedes Spiel gewinnt, d.h. mit maximal acht + Versuchen wird jede Zahl (mit vier Ziffern aus sechs möglichen) ermittelt, die sich der + menschliche Gegenspieler (oder der Rechner selbst) ausdenkt. +
  • +
+ + +
+ + +
+ + + +
  +
\ No newline at end of file -- cgit v1.2.3