• Keine Ergebnisse gefunden

Übungsblatt13:ProgrammiereninCII ÜbungenzuComputergrundlagenWS2017/2018

N/A
N/A
Protected

Academic year: 2021

Aktie "Übungsblatt13:ProgrammiereninCII ÜbungenzuComputergrundlagenWS2017/2018"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Übungen zu Computergrundlagen WS 2017/2018

Übungsblatt 13: Programmieren in C II

2. Februar 2018

Allgemeine Hinweise

• Abgabetermin für die Lösungen ist Donnerstag, 08.02.2018, 15:00 Uhr

• Schickt die Lösungen bitte per Email an Euren Tutor:

Montag 11:30 – 13:00: Julian Zeller (julian.zeller@icp.uni-stuttgart.de) Montag 14:00 – 15:30: Miriam Kohagen (mkohagen@icp.uni-stuttgart.de) Dienstag 14:00 – 15:30: Ingo Tischler (itischler@icp.uni-stuttgart.de) Dienstag 15:45 – 17:15: Konrad Breitsprecher (konrad@icp.uni-stuttgart.de) Donnerstag 09:45 – 11:15: Ashreya Jayaram (ashreyaj@icp.uni-stuttgart.de)

Ziel dieses Übungsblattes ist es, das Pythonskript /group/cgl/2017/13/occurrence.py in C zu implementieren. Das Pythonskript zählt die Häufigkeit der verschiedenen Wörter in einem Text und gibt diese aus. Schaut Euch das Skript zunächst an und versucht zu verstehen, wie es funktioniert.

Überlegt Euch vorallem, welche Features von Python benutzt werden, die es in C so nicht gibt und die daher von Euch nachgebaut werden müssen!

Hinweise:

• Zum Testen des Programmes könnt Ihr die Dateiengpl-3.0.txt(General Public License) und mobydick.txt (Moby Dick) im Verzeichnis/group/cgl/2017/13verwenden.

• Dokumentation der meisten C-Bibliotheksfunktionen bekommt man über den man-Befehl. So zeigt der Befehl man getline die Hilfe für die C-Funktiongetline an.

• Zum Kompilieren Eures C-Programms verwendet wieder am besten den Befehl gcc - std = g n u 9 9 - O3 - o o c c u r r e n c e o c c u r r e n c e . c

da diegetline-Funktion eine POSIX-Erweiterung ist.

Aufgabe 13.1: Wörter zählen in C (10 Punkte)

13.1.1 Schreibt ein C-Programm, das eine Datei zeilenweise einliest und den Inhalt auf dem Bildschirm ausgibt. Der Dateiname soll auf der Kommandozeile übergeben werden können.

(2 Punkte) Hinweise:

Verwendet den Befehl getline.

Lest den Abschnitt “Example” in der Linux-Manpage von getline. Er zeigt ein Beispiel- programm. Unter Mac OS X ist die Manpage knapper und das Beispiel etwas komplizierter.

1

(2)

13.1.2 Erweitert das Programm aus der vorigen Aufgabe so, dass es die einzelnen Zeilen mit Hilfe der Funktionstrtokin einzelne Wörter zerlegt. Verwendet alsdelim dafür die Zeichenkette delimiters aus dem Pythonskript. (1 Punkt)

13.1.3 Erweitert das Programm aus der vorigen Aufgabe so, dass es die einzelnen Wörter mit Hilfe der Funktiontolower vollständig in Kleinbuchstaben umwandelt. (2 Punkte)

13.1.4 Erweitert das Programm aus der vorigen Aufgabe so, dass es die verschiedenen Wörter zählt und das Ergebnis ausgibt. (4 Punkte)

Hinweise:

Erzeugt jeweils für die Wörter und deren Anzahl Arrays, die entsprechend das Wort und die dazugehörige Anzahl speichern. Das n-te Wort gehört dann zumn-ten Eintrag in der Liste mit den Häufigkeiten.

Speichert die Wörter als Array von Strings, also Zeigern auf Zeichen.

Wenn ein Wort im Text gefunden wird, dann muss das Programm zunächst schauen, ob das Wort bereits in der Liste ist, und wenn ja, an welcher Position. Wenn das der Fall ist, muss der entsprechende Zähler erhöht werden.

Wenn das Wort nicht existiert, müssen die beiden Arrays erweitert werden. Der neue String wird an die Liste der Wörter angehängt und der neue Zähler mit 1 initialisiert, da wir ja bereits ein Aufkommen dieses Worts beobachtet haben.

Caveat Emptor! Wenn das Wort an die Liste der Wörter angehängt wird, muss die Funkti- onstrdupverwendet werden, sonst sind die Ergebnisse vermutlich etwas seltsam. Überlegt Euch, warum das so ist, und besprecht Eure Überlegungen mit Eurem Tutor. Wann kann die gedankenlose Verwendung von strdup zum Problem werden? (Keine Aufgabe zum Abgeben!)

13.1.5 Messt die Laufzeit des Pythonskripts und des C-Programmes anhand von Moby Dick.

Welches davon ist schneller? Warum? (1 Punkt)

2

Referenzen

ÄHNLICHE DOKUMENTE

Apfel Birne Ananas Apfel Decke Sonne Apfel Licht Auto Apfel Arbeit Himmel Schirm Glocke Brille Apfel Maus Apfel Haus Computer Fenster Apfel Apfel

Blitz Hase Blatt Ball Blitz Wald Boden Boot Blech Blitz Wolke Himmel Regen Hagel Ball Balkon Hitze Putz Blitz Platz Schmutz Sonne Blatt Ball Blitz Wald Blech

leise und kein Mensch hat getanzt, sondern alle standen in kleinen Gruppen und haben nur gegessen, getrunken oder geredet ... Gestern war ich

§ 45 SGB V besteht der Anspruch auf Vergü- tung für die Dauer von 10 Tagen, und nur wenn das Kind noch keine 12 Jahre alt ist. Außerdem besteht gemäß § 45 SGB V ein Anspruch auf

Wer Sorgen hat, dass die Apothekenleitung die Kündigung ignoriert, nimmt eine Kollegin oder einen Kollegen als mögliche Zeugen mit, wenn sie ausgehändigt wird, oder lassen Sie

Der Studie Wellcome Global Monitor über die Einstellungen von Menschen auf der ganzen Welt zu Wissenschaft und gro- ßen gesundheitlichen Heraus- forderungen zufolge halten

Alternative: Stammzelltransplan- tation Handelt es sich um jüngere Pa- tienten in gutem Allgemeinzustand oder spricht die Leukämie nicht auf eine Chemotherapie an, kann auch

Die Augen Ihres Kunden sind empfindlich und reagieren auf Konservierungsstoffe in Augentropfen mit Brennen oder anderen Irritationen. Dann sind Präparate ohne die