Universität Ulm - Sektion Angewandte Informationsverarbeitung

11. Übungsblatt (01.02.2000 - 10.02.2000)

Allgemeine Informatik III (WS 1999/2000)


I/O-Systemcalls

 

 

16. Aufgabe 10 Punkte

Erstellen Sie ein Programm io.c , welches von der Standardeingabe Zeichen einliest und in einer temporären Datei ablegt. Sind alle Zeichen von der Standardeingabe gelesen, so sollen die Zeichen aus der temporären Datei an die Diagnoseausgabe ausgegeben werden.

Vorgaben:

 

 

 

 

17. Aufgabe 10 Punkte

Datenbanksysteme verwenden zur Speicherung von Daten sehr häufig eine Hash-Organisation und feste Datensatzlängen. In dieser Aufgabe soll dies in Teilen nachgebildet werden.

Die Datensätze bestehen aus Namen, die zeilenweise aus einer Datei eingelesen werden sollen (verwenden Sie fgets - warum nicht gets?). Diese Namen werden in einer Hash-Datei, die

const int table_length = 19

Datensätze aufnehmen kann. Dort wird jeder Datensatz mit der festen Länge

const int record_length = 31

abgelegt. Alle nicht explizit belegten Bytes der Dateien sollen Null-Bytes sein!

Aus dem Namen wird wie folgt die Position in der Datei bestimmt:

 

int hash(char string[], int len) {

int i, s;

s = i = 0;

while((i < len) && (string[i] != '\0')) {

s = (s * 10 + string[i]) % table_length;

i++;

}

return (s);

}

Dabei kann es natürlich passieren, dass verschiedene Namen auf dieselbe Position abgebildet werden (Kollision). Dies kann dadurch erkannt werden, dass am Beginn des Speicherortes ein Zeichen ungleich dem Null-Byte steht. Der Datensatz, der auf eine bereits belegte Position trifft, wird in einer Überlauf-Datei wieder mit fester Länge (s.o.) hinten angefügt.

Das Programm erhält zwei Argumente:

1. Namen der Hash- oder Primär-Datei

2. Namen der Überlauf-Datei

Die Hash-Datei wird zu Beginn mit table_length * record_length Null-Bytes initialisiert.

Hinweise:

 

 

Die Lösung dieses Übungsblattes wird ab Freitag, dem 11.02.2000, im Netz zur Verfügung stehen.

 

 


Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

Universität Fakultät SAI


Susanne Schmucker, 01.02.2000