Prof. Dr. R. Schrader WS 2002/2003 D. R¨abiger
1. Programmieraufgabe Informatik II
Online–Abgabe bis zum 27.11.2002
In der Vorlesung wurde der Algorithmus von Quine/McCluskey zur Berechnung aller Primimpli- kanten einer gegebenen Booleschen Funktion besprochen.
Datenstruktur
F¨ur die Implementierung soll ein Monom
m =xaj1j1 . . . xajkjk
mitajl ∈B,(jl)l=1,...,k streng monoton wachsend,j1 ≥1, jk ≤n
und der festen L¨angenwie folgt dargestellt werden: wir notieren an der Stelleieines Arrays von
Bytes ein(e)
1 fallsi∈ {j1, . . . , jk}undai = 1 0 fallsi∈ {j1, . . . , jk}undai = 0
? sonst
Diese Darstellung nennen wir{0,1, ?}–Darstellung des Monomsmder L¨angen. Aufgabenstellung
Implementieren Sie den Algorithmus von Quine/McCluskey in ANSI C oder ANSI C++. Vermei- den Sie Compiler–spezifische Anweisungen und das Einbinden von speziellen Bibliotheken. F¨ur diese Aufgabe ist das Benutzen der STL1 ausdr¨ucklich erlaubt. Das Programm soll Monome mit einer fixen L¨ange von 8 Stellen verarbeiten k¨onnen. Der gesamte Quelltext soll in einer einzigen Datei enthalten sein, die alleine kompiliert werden kann.
Die Eingabe soll ¨uber eine Datei mit dem Nameninput.txtgelesen werden. Diese enth¨alt pro Zeile die{0,1, ?}–Darstellung der L¨ange 8 eines Mintermes. Alle Minterme zusammen definieren die zu betrachtende Funktion. Eine Zeile wird nur mit dem Zeilentrenner (\n) abgeschlossen.
Die Ausgabe soll in eine Datei mit dem Namenoutput.txtgeschrieben werden. Diese enth¨alt pro Zeile die{0,1, ?}–Darstellung der L¨ange 8 einer Primimplikanten in lexikographisch aufstei- gender Ordnung, wobei? <0<1.
Organisatorische Hinweise
Die L¨osung zur Programmieraufgabe wird online ¨uber das WWW2 abgegeben. Bei der Abgabe wird sofort gepr¨uft, ob sich das Programm korrekt kompilieren l¨asst. Außerdem wird anhand einer weiteren Testeingabe gepr¨uft, ob das Programm die erwartete Ausgabe liefert. Bei Fehlern erhal- ten Sie einen Hinweis auf den Fehler und k¨onnen diesen beheben, bevor Sie es erneut probieren.
1Standard Template Library. ANSI C++ Bibliothek, die grundlegende Datenstrukturen wie z.B. Listen zur Verf¨ugung stellt
2Die Seiten zu den ¨Ubungen finden Sie unter
http://www.zaik.uni-koeln.de/AFS/teachings/courses/InfoII/uebungen.html
Eine Beispieldatei zur Eingabe kann ebenfalls auf den oben genannten Webseiten heruntergela- den werden. Dort finden Sie auch eine Ausgabedatei, so dass Sie vor der elektronischen Abgabe vergleichen k¨onnen, ob Ihr Programm das erwaretete Ausgabeformat besitzt. Achten Sie vor auch darauf, dass keine unn¨otigen Leerzeilen am Anfang und Ende Ihrer Ausgabe entstehen.
Es wird Einzel–Abgabe erwartet. Die abgegeben Quelltexte werden auf ¨Ahnlichkeit untersucht.
Bei T¨auschungsversuchen werden beide betroffenen Personen keine Bonus–Punkte f¨ur den Pro- grammierteil der Klausur erhalten.
Es ist ausdr¨ucklich erw¨unscht, dass die Mailingliste f¨ur Fragen und Antworten zu allgemeinen Problemen, die bei der Programmierung in C/C++ entstehen k¨onnen, genutzt wird. Dar¨uber hinaus sollen nat¨urlich keine L¨osungen f¨ur die konkrete Aufgabenstellung pr¨asentiert werden.