|
|
|
|
|
|
|
|
|
|
|
Personendaten aus Textdateien lesen und sortieren
PROGRAM Persttab;
CONST max = 100;
TYPE tpers = RECORD name : STRING[20]; nachname : STRING[20]; plz : STRING[10]; ort : STRING[20]; END;
tperstab= ARRAY [1..max] OF tpers; t_str = STRING[100]; t_strarr = ARRAY [1..100] OF t_str;
{Prozedur zum Ausgeben der Tabelle}
PROCEDURE Persaus(tab : tperstab; anz : INTEGER); VAR i : INTEGER; BEGIN FOR i := 1 TO anz DO BEGIN Writeln('Name : ',tab[i].name); Writeln('Nachname: ',tab[i].nachname); Writeln('Plz : ',tab[i].plz); Writeln('Ort : ',tab[i].ort); Writeln; END; END;
{Prozedur zum Speichern der Daten in einer Textdatei}
PROCEDURE dataus (pfad: STRING; VAR tab: tperstab; anz: INTEGER); VAR i: INTEGER; datei: TEXT; BEGIN Assign(datei,pfad); Rewrite(datei); FOR i:= 1 TO anz DO BEGIN Write(datei,tab[i].name,'!'); Write(datei,tab[i].nachname,'!'); Write(datei,tab[i].plz,'!'); Writeln(datei,tab[i].ort); END; Close(datei); END;
{Prozedur zum Formatieren einer Zeile im Csv- Format}
PROCEDURE Csvformat(trennzeichen : CHAR; zeile : STRING; VAR strarr : t_strarr; VAR stranz : INTEGER); VAR i, i_alt, anf :INTEGER; BEGIN stranz := 0; anf := 1; FOR i := 1 TO Length(zeile) DO BEGIN IF (zeile[i] = trennzeichen) THEN BEGIN stranz := stranz + 1; strarr[stranz] := copy(zeile,anf,i - anf); anf := i + 1; END; END; stranz := stranz + 1; strarr[stranz] := copy(zeile,anf,Length(zeile) - anf + 1); END;
{Prozedur zum einlesen der Personendaten aus einer Textdatei}
PROCEDURE perseinl (pfad: STRING; VAR ptab: tperstab; VAR ptabanz : INTEGER); VAR tabanz : INTEGER; zeile : STRING; datei : TEXT; wort : STRING; j : INTEGER; strarr : t_strarr; stranz : INTEGER; BEGIN Assign(datei,pfad); Reset (datei); tabanz := 0; WHILE NOT(eof(datei)) DO BEGIN Readln(datei,zeile); Csvformat('!',zeile,strarr,stranz); ptabanz := ptabanz + 1; ptab[ptabanz].name := strarr[1]; ptab[ptabanz].nachname := strarr[2]; ptab[ptabanz].plz := strarr[3]; ptab[ptabanz].ort := strarr[4]; END; close(datei); END;
{Prozedur zum Vertauschen der Werte in der Verbundtabelle}
PROCEDURE Vertausche(VAR a : tpers; VAR b : tpers); VAR h : tpers; BEGIN h := a; a := b; b := h; END;
{Prozedur zum Sortieren der Verbundtabelle, nach beliebigem Kriterium}
PROCEDURE sortt (VAR a : tperstab; wahl : INTEGER; anz : INTEGER); VAR i, j: INTEGER; hilf : tpers; BEGIN FOR i:= 2 TO anz DO BEGIN FOR j:= anz DOWNTO i DO BEGIN CASE wahl OF 1: IF a[j-1].name > a[j].name THEN Vertausche(a[j],a[j-1]); 2: IF a[j-1].nachname > a[j].nachname THEN Vertausche(a[j],a[j-1]); 3: IF a[j-1].plz > a[j].plz THEN Vertausche(a[j],a[j-1]); 4: IF a[j-1].ort > a[j].ort THEN Vertausche(a[j],a[j-1]); END; END; END; END;
VAR perstab: tperstab; persanz : INTEGER; wahl: INTEGER;
{Beginn des Hauptprogammes}
BEGIN perseinl('Pfad',perstab,persanz); persaus(perstab, persanz); Writeln('Sortieren nach: '); Writeln; Writeln('Name [1]'); Writeln('Nachname [2]'); Writeln('Plz [3]'); Writeln('Ort [4]'); Writeln; Write('Ihre Wahl: '); Readln(wahl); Writeln; sortt(perstab,wahl,persanz); persaus(perstab, persanz); dataus('Pfad',perstab,persanz); Readln; END.
Vor dem Sortieren:
Daten nach dem Sortieren nach Postleitzahl:
ZURÜCK
|
|
|
|
|
|
|
|
|
Letzte Änderung: 09.02.2007
© Pädagogisches Institut für die deutsche Sprachgruppe
- Bozen. 2000 -
|
|
|
|
|
|
|
|
|