Christoph Ott Institut für Angewandte Informationsverarbeitung 25. August 2008
Blatt 2


Uni Logo



WiMa-Praktikum/ Programmier-Praktikum (SS 2008)
Präsenz-Übungsaufgaben



Tutoriumstermin: 26. August 2008 11-13 Uhr

1 Kontrollstrukturen & Ausgabeformatierung

Schreibt ein Programm, das das ''kleine Einmaleins'' vollständig am Bildschirm ausgibt. Achtet bitte auf eine tabellarische, schöne Ausgabeformatierung.

Hinweis: Es empfiehlt sich die Verwendung von for-Schleifen.

2 Auf Medaillenjagd

Die Datei teams.dat enthält die Top-Ten des Medaillenspiegels der Olympischen Sommerspiele von Athen 2004. In der ersten Zeile befindet sich der Name des besten Teams, in der zweiten Zeile die Anzahl der gewonnenen Goldmedaillen, in der dritten Zeile die der Silbermedailen, entsprechend in der vierten Zeile die der Bronzemedaillen. In der fünften Zeile geht es entsprechend mit dem zweitbesten Team weiter.

2.1 Erweiterte Dateiausgabe

Schreibt ein Programm, das die Datei teams.dat einliest und am Bildschirm ausgibt. Die Ausgabe der Medaillenanzahl soll dabei von etwas Text wie z.B.
Anzahl Goldmediallen: 36
umrahmt werden. Fehlersituationen (wie z.B. ''Datei lässt sich nicht öffnen'' oder ''Eingelesener Wert ist keine Zahl'') müssen in dieser wie in den weiteren Teilaufgaben nicht unbedingt berücksichtigt werden.

2.2 Strukturen und Arrays

Legt nun für jedes Team eine Struktur an, in der der Name des Teams sowie die Anzahl der Gold-, Silber- und Bronzemedaillen verwaltet werden. All diese Strukturen verwaltet Ihr am besten in einem Array (Array-Elemente können schließlich nicht nur primitive Datentypen sein, sondern auch Strukturen!). Zum Anlegen des Arrays dürft Ihr davon ausgehen, dass sich genau 10 Teams in der Datei teams.dat befinden und somit 10 Teams angelegt werden sollen. Vergleicht nun die Anzahl der Goldmedaillen zweier aufeinander folgender Teams und gebt in etwa folgenden Text auf dem Bildschirm aus:
- USA hat 4 Goldmedaillen mehr als China
- China hat 5 Goldmedaillen mehr als Russland
- Russland hat 10 Goldmedaillen mehr als Australien
- Australien hat 1 Goldmedaillen mehr als Japan
- Japan hat 3 Goldmedaillen mehr als Deutschland
- Deutschland hat 2 Goldmedaillen mehr als Frankreich
- Frankreich hat 1 Goldmedaillen mehr als Italien
- Italien hat 1 Goldmedaillen mehr als Suedkorea
- Suedkorea hat 0 Goldmedaillen mehr als Grossbritannien

2.3 Unbekannte Array-Größe

Nehmt nun an Ihr wisst nicht wie viele Team sich in der Datei teams.dat befinden. Sucht nach einer geeigneten Möglichkeit die vorige Teilaufgabe dennoch zu erfüllen.

3 Zeiger

Ein paar kleine Aufgabe zu Zeigern...

3.1 Speichergröße

Schreibt ein kleines Programm (ähnlich wie Aufgabe 1.3 auf dem 1.Übungsblatt), das die Größe eines Zeigers auf eine Integer, eine Double, einen Character und eine Boolean augibt. Was fällt auf? Waraum ist das so? Auf wieviele verschiedene Adressen kann ein C++-Programm folglich maximal zugreifen.

3.2 Zeiger und Adressen

Ist es möglich selbst zu bestimmen an welcher Stelle im Speicher eine Variable abgelegt werden soll? Wenn ja, wie (Tipp: Einfach mal ausprobieren)? Schreibt ein kleines Programm, das eine ganze Zahl $i$, einen Zeiger $z$ und einen Zeiger auf diesen Zeiger $zz$ anlegt. Weist $i$ den Wert $5$ zu und gebt für alle drei Variablen die Adresse, den Wert und gegebenenfalls den Wert der Variablen, auf den diese Variable zeigt, am Bildschirm aus.

3.3 BMI mit Zeigern

Schreibt das Programm zur Berechnung des Body-Maß-Indizes unter Verwendung von Zeigern. Diesmal sollen Gewicht und Größe nicht in Variablen vom Typ $double$ eingelesen werden, sondern in $double*$. Auch die Berechnung (Division und Multiplikation) soll über Zeigervariablen durchgeführt werden. Das Ergebnis sollte natürlich das selbe sein.

Viel Erfolg!



Christoph Ott 2008-08-25