PROGRAM ver;
USES crt,hilfe;
TYPE
datumtyp = RECORD
tag : 1..31;
monat :1..12;
jahr :0..99;
END;
allgemeine_angaben_typ = RECORD
dateiname:string;
bezeichnung: string;
ort: string;
datum : datumtyp;
anfang: 0..24;
ende : 0..24;
wetter: string;
END;
{ st_typ = RECORD
name : string;
rechts,gerade,links:boolean;
END;
}
kreuzungs_typ = RECORD
allgemeine_angaben :allgemeine_angaben_typ;
typ :3..4;
st1 :st_typ;
st2 :st_typ;
st3 :st_typ;
st4 :st_typ;
END;
datei_typ=FILE OF kreuzungs_typ;
zaehl_feld_typ = ARRAY [1..4,1..3,0..95,1..6] OF BYTE;
{Strassen,Richtungen,Viertelstunden,Fahrzeugarten}
zaehl_typ = Record
messungsname:string;
zaehlfeld:zaehl_feld_typ;
END;
mess_datei_typ = FILE OF zaehl_typ;
VAR kreuzung:kreuzungs_typ;
datei:datei_typ;
m_datei:mess_datei_typ;
hilf_integer:integer;
hilf_string:string;
antwort,ent:char;
zaehlung:zaehl_typ;
schluss:boolean;
kreuzungsdatei,zaehlungsdatei:string;
Procedure einleitung;
Begin
clrscr;
writeln(' ***** Willkommen zu "ROMAST¸" Ver. 1.0, ******');
writeln(' dem automatischen Verkehrsz„hlungauswertungsprogramm!');
writeln;
writeln('Sie k”nnen:');
writeln('Die Daten von Kreuzungen eingeben (Strassen, Richtungen, ...)');
writeln('Die Daten von Messungen an diesen Kreuzungen speichern');
writeln('Eine einfache Analyse der Daten sehen.');
writeln('In zuknftigen Versionen stellen wir Ihnen zur Verfgung:');
writeln(' weitere Analyse- und Editierfunktionen');
writeln(' graphische Elemente');
writeln(' Druckmen');
writeln('Anregungen oder Quelltexte bitte an LLG-Cottbus@t-online.de');
writeln('Das Autorenteam: Romy Klausnitzer');
writeln(' Stefan Uhlich');
writeln(' Mathias Vogel');
writeln;
writeln('Grundlage bildet eine Verkehrz„hlung im Viertelstundentakt');
writeln('Jede Kreuzung wird als *.ver Datei auf A: gespeichert');
writeln('Jede Messung wird als *.mes Datei auf a gespeichert');
writeln('Fr das Anzeigen / die Analyse einer Messung brauchen sie');
writeln('also beide Dateinamen, den der Kreuzung und den der Messung');
writeln('Speichern ist im Moment nur auf Diskette (LW A:) m”glich');
writeln('"ENTER" drcken um fortzufahren.');
readln;
End;
Procedure beschreibung;
Begin
clrscr;
writeln;
writeln('Hinweise:');
writeln('Bevor eine Messung eingelesen werden kann muss die');
writeln('Kreuzung erstellt und gespeichert sein.');
writeln('Achten Sie also immer darauf, dass die jeweils richtige Kreuzung');
writeln('im Arbeitsspeicher ist!');
writeln('Zur Zeit im Arbeitsspeicher:');
writeln (' KREUZUNGSDATEI: ',kreuzungsdatei,' MESSUNG: ' ,zaehlungsdatei);
{ writeln('"ENTER" drcken um fortzufahren.');
readln;}
End;
PROCEDURE einlesen_allg;
BEGIN
writeln ('Geben Sie bitte eine Bezeichnung fr die aktuelle ');
writeln ('Kreuzung ein (z. B. "Kreuzung 1" ).');
liesstring ('max 255 Zeichen: ',kreuzung.allgemeine_angaben.bezeichnung);
liesstring ('Namen des Z„hlortes (z. B. "Wellmitz":) ',
kreuzung.allgemeine_angaben.ort);
writeln ('Bitte geben Sie das Datum ein!');
liesintegergrenze('Jahr der Z„hlung:',hilf_integer,0,99);
kreuzung.allgemeine_angaben.datum.jahr:=hilf_integer;
liesintegergrenze('Monat der Z„hlung:',hilf_integer,0,12);
kreuzung.allgemeine_angaben.datum.monat:=hilf_integer;
liesintegergrenze('Tag der Z„hlung:',hilf_integer,1,31);
kreuzung.allgemeine_angaben.datum.tag:=hilf_integer;
REPEAT
liesintegergrenze('Startzeit der Z„hlung (0..24):',hilf_integer,0,24);
kreuzung.allgemeine_angaben.anfang:=hilf_integer;
liesintegergrenze('Endzeit der Z„hlung (0..24):',hilf_integer,0,24);
kreuzung.allgemeine_angaben.ende:=hilf_integer;
IF kreuzung.allgemeine_angaben.anfang >= kreuzung.allgemeine_angaben.ende
THEN writeln ('unm”glich!!!, das ganze nochmal!!');
UNTIL kreuzung.allgemeine_angaben.anfang < kreuzung.allgemeine_angaben.ende;
writeln ('Beschreiben Sie kurz das Wetter am Meátag');
writeln ('Angabe kann auch sp„ter erfolgen');
liesstring ('max 255 Zeichen: ',kreuzung.allgemeine_angaben.wetter);
END;
PROCEDURE richtungen_einlesen(VAR st:st_typ;x:byte);
BEGIN
clrscr;
writeln('So, jetzt legen wir die Daten jeder Strasse fest');
writeln('Strasse : ',x);
liesstring('Name der Strasse: ',st.name);
writeln('Welche Richtungen, Antwort jeweils mit j oder n');
liesboolean('Gibt es die Richtung RECHTS :',st.rechts);
liesboolean('Gibt es die Richtung GERADEAUS :',st.gerade);
liesboolean('Gibt es die Richtung LINKS :',st.links);
END;
PROCEDURE einlesen_dat;
VAR i:integer;
BEGIN
clrscr;
writeln ('Jetzt werden noch die speziellen Daten dieser Kr. eingelesen.');
writeln ('Ist es eine 3-er oder 4-er Kreuzung?');
liesintegergrenze('Eingabe 3 oder 4: ',hilf_integer,3,4);
kreuzung.typ:=hilf_integer;
richtungen_einlesen(kreuzung.st1,1);
richtungen_einlesen(kreuzung.st2,2);
richtungen_einlesen(kreuzung.st3,3);
IF kreuzung.typ = 4 THEN richtungen_einlesen(kreuzung.st4,4);
END;
PROCEDURE anzeigen_alles;
BEGIN
clrscr;
writeln ('Die allgemeinen Daten im šberblick: ');
writeln ('=================================== ');
writeln ('Name der Kreuzung : ',kreuzung.allgemeine_angaben.bezeichnung);
writeln ('Z„hlort : ',kreuzung.allgemeine_angaben.ort);
write ('Datum : ',kreuzung.allgemeine_angaben.datum.tag,'.');
write (kreuzung.allgemeine_angaben.datum.monat,'.');
writeln (kreuzung.allgemeine_angaben.datum.jahr);
write ('Zeit : Von ',kreuzung.allgemeine_angaben.anfang);
writeln (' Uhr bis ',kreuzung.allgemeine_angaben.ende,' Uhr');
write ('Wetter : ');
IF kreuzung.allgemeine_angaben.wetter=''
THEN writeln('Noch keine Angaben')
ELSE writeln(kreuzung.allgemeine_angaben.wetter);
writeln ('Kreuzung mit ',Kreuzung.typ,' Strassen');
writeln;
writeln ('Richtungen:');
zeige(kreuzung.st1,1);
zeige(kreuzung.st2,2);
zeige(kreuzung.st3,3);
IF kreuzung.typ=4 THEN zeige(kreuzung.st4,4);
END;
PROCEDURE allgemeine_erfassung;
BEGIN
REPEAT
einlesen_allg;
einlesen_dat;
anzeigen_alles;
writeln('Daten in Ordnung?');
writeln('n oder N fr Nein (Wiederholung der Eingabe), alles andere fr ja.');
writeln('Die Daten werden dann gespeichert.');
liesstring('Eingabe : ',hilf_string);
IF length(hilf_string)=1 THEN antwort:=hilf_string[1]
ELSE antwort:='J';
antwort:=upcase(antwort);
UNTIL antwort <>'N'
END;
PROCEDURE speichern;
VAR dateiname1:string;
BEGIN
clrscr;
writeln('OK, alle Daten sind eingegeben, jetzt kann gespeichert werden');
writeln('DOS 8.3, Endung ist ver, auf Diskette');
REPEAT
liesstring('Dateibezeichnung, max. 8 Zeichen eingeben: ',dateiname1);
UNTIL (length(dateiname1)<9) and (length(dateiname1)>0);
dateiname1:='a:\'+dateiname1+'.ver';
kreuzung.allgemeine_angaben.dateiname:=dateiname1;
kreuzungsdatei:=dateiname1;
ASSIGN(datei,dateiname1);
{$I-}
reset(datei);
{$I+}
IF ioresult <> 0
THEN
BEGIN
rewrite(datei);
write(datei,kreuzung);
close(datei);
writeln('Speichern erfolgreich!');
writeln('Die Z„hldaten k”nnen mit Hilfe von "Z„hlung" sp„ter eingegeben werden!');
writeln('Weiter mit ENTER!');
readln;
END
ELSE
BEGIN
writeln('Datei existiert schon, berschreiben? (j oder J fr Ja, sonst nein');
liesstring('Eingabe : ',hilf_string);
IF length(hilf_string)=1 THEN antwort:=hilf_string[1]
ELSE antwort:='N';
antwort:=upcase(antwort);
IF antwort='J' THEN
BEGIN
rewrite(datei);
write(datei,kreuzung);
close(datei);
writeln('Speichern erfolgreich!, Datei wurde berschrieben');
writeln('Die Z„hldaten k”nnen mit Hilfe von ... sp„ter eingegeben werden!');
writeln('Weiter mit ENTER!');
readln;
END
ELSE
BEGIN
writeln('Datei wurde nicht berschrieben');
writeln('Weiter mit ENTER!');
readln;
END;
END;
END;
PROCEDURE auslesen;
VAR dateiname:string;
BEGIN
clrscr;
writeln('Die Daten welcher Datei sollen geladen und gezeigt werden?');
writeln('Name ohne . und endung eingeben');
REPEAT
liesstring('Dateibezeichnung, max. 8 Zeichen eingeben: ',dateiname);
UNTIL (length(dateiname)<9) and (length(dateiname)>0);
dateiname:='a:\'+dateiname+'.ver';
ASSIGN(datei,dateiname);
{$I-}
reset(datei);
{$I+}
IF ioresult = 0
THEN
BEGIN
read(datei,kreuzung);
close(datei);
END
ELSE
BEGIN
writeln('Diese Datei existiert nicht!');
writeln('Weiter mit ENTER!');
readln;
END;
END;
PROCEDURE gespeichertes_zeigen;
BEGIN
auslesen;
kreuzungsdatei:=kreuzung.allgemeine_angaben.dateiname;
anzeigen_alles;
writeln('Weiter mit ENTER!');
readln;
END;
FUNCTION pruefung(i,j:integer;kr:kreuzungs_typ):boolean;
VAR hb:boolean;
st:st_typ;
BEGIN
IF i=1 THEN st:=kr.st1;
IF i=2 THEN st:=kr.st2;
IF i=3 THEN st:=kr.st3;
IF i=4 THEN st:=kr.st4;
IF j=1 THEN hb:=st.links;
IF j=2 THEN hb:=st.gerade;
IF j=3 THEN hb:=st.rechts;
pruefung:=hb;
END;
PROCEDURE legende_zeigen(i,j,k,l:integer;kr:kreuzungs_typ);
VAR st:st_typ;
k1:integer;
BEGIN
IF (l=2) or (l=3) or (l=4)or (l=5)or (l=6) THEN gotoxy(wherex,wherey-1);
k1:=k+1;
IF i=1 THEN st:=kr.st1;
IF i=2 THEN st:=kr.st2;
IF i=3 THEN st:=kr.st3;
IF i=4 THEN st:=kr.st4;
{write (kr.allgemeine_angaben.bezeichnung,' ');}
write(st.name);
write('-Str.(Nr.',i,')');
CASE j OF
1 : write('li ');
2 : write('ge ');
3 : write('re ');
END;
write('');
write(k DIV 4 :3,':');
IF (k MOD 4 = 0) THEN write ('00')
ELSE write((k MOD 4)*15);
write('bis');
write(k1 DIV 4 :3,':');
IF (k1 MOD 4 = 0) THEN write ('00')
ELSE write((k1 MOD 4)*15);
write('');
IF l=1 THEN write (' PKW');
IF l=2 THEN
BEGIN
gotoxy(wherex+7,wherey);
write (' LKW');
END;
IF l=3 THEN
BEGIN
gotoxy(wherex+14,wherey);
write (' LZ');
END;
IF l=4 THEN
BEGIN
gotoxy(wherex+21,wherey);
write (' Bus');
END;
IF l=5 THEN
BEGIN
gotoxy(wherex+28,wherey);
write (' Krad');
END;
IF l=6 THEN
BEGIN
gotoxy(wherex+35,wherey);
write (' Rad');
END;
END;
PROCEDURE messwerterfassung;
VAR wahl:char;
i,j,k,l:byte;
hilf:integer;
BEGIN
IF kreuzungsdatei='noch keine'
THEN
BEGIN
writeln('Erst eine Kreuzung laden! ');
writeln('Weiter mit ENTER!');
readln;
END
ELSE
BEGIN
writeln('OK, wir lesen Daten fr eine Messung an der ');
writeln('Kreuzung: ',kreuzung.allgemeine_angaben.bezeichnung,' ein.');
{writeln('Auf gehts, sie k”nnen jederzeit mit "E" beenden, sonst gehts weiter');}
writeln('Wollen sie wirklich alles (neu) eingeben, weiter mit j');
readln(wahl);wahl:=upcase(wahl);
IF wahl ='J'
THEN
BEGIN
FOR i:=1 TO 4 DO
FOR j:=1 TO 3 DO
FOR k:= 0 TO 95 DO
FOR l:= 1 TO 6 DO
zaehlung.zaehlfeld[i,j,k,l]:=0;
FOR i:=1 TO kreuzung.typ DO
FOR j:=1 TO 3 DO
FOR k:=(kreuzung.allgemeine_angaben.anfang*4) TO (kreuzung.allgemeine_angaben.ende*4-1) DO
BEGIN
IF pruefung(i,j,kreuzung)
THEN
FOR l:=1 TO 6 DO
BEGIN
legende_zeigen(i,j,k,l,kreuzung);
liesintegergrenze('',hilf,0,250);
zaehlung.zaehlfeld[i,j,k,l]:=hilf;
END;
END;
END
ELSE
BEGIN
writeln('Tschss dann, weiter mit ENTER!');
readln;
END;
END;
END;
PROCEDURE messwertspeicherung;
VAR dateiname:string;
BEGIN
clrscr;
writeln('Die Messwerte werden gespeichert ');
writeln('DOS 8.3, Endung ist mes, auf Diskette');
REPEAT
liesstring('Dateibezeichnung, max. 8 Zeichen eingeben: ',dateiname);
UNTIL (length(dateiname)<9) and (length(dateiname)>0);
dateiname:='a:\'+dateiname+'.mes';
zaehlung.messungsname:=dateiname;
zaehlungsdatei:=zaehlung.messungsname;
ASSIGN(m_datei,dateiname);
{$I-}
reset(m_datei);
{$I+}
IF ioresult <> 0
THEN
BEGIN
rewrite(m_datei);
write(m_datei,zaehlung);
close(m_datei);
writeln('Speichern erfolgreich!');
writeln('Weiter mit ENTER!');
readln;
END
ELSE
BEGIN
writeln('Datei existiert schon, berschreiben? (j oder J fr Ja, sonst nein');
liesstring('Eingabe : ',hilf_string);
IF length(hilf_string)=1 THEN antwort:=hilf_string[1]
ELSE antwort:='N';
antwort:=upcase(antwort);
IF antwort='J' THEN
BEGIN
rewrite(m_datei);
write(m_datei,zaehlung);
close(m_datei);
writeln('Speichern erfolgreich!, Datei wurde berschrieben');
writeln('Weiter mit ENTER!');
readln;
END
ELSE
BEGIN
writeln('Datei wurde nicht berschrieben');
writeln('Weiter mit ENTER!');
readln;
END;
END;
END;
PROCEDURE messwerte;
BEGIN
messwerterfassung;
messwertspeicherung;
END;
PROCEDURE lade_messwerte;
VAR dateiname:string;
BEGIN
clrscr;
writeln('Die Daten welcher Messung sollen geladen und gezeigt werden?');
writeln('Name ohne . und endung eingeben');
REPEAT
liesstring('Dateibezeichnung, max. 8 Zeichen eingeben: ',dateiname);
UNTIL (length(dateiname)<9) and (length(dateiname)>0);
dateiname:='a:\'+dateiname+'.mes';
ASSIGN(m_datei,dateiname);
{$I-}
reset(m_datei);
{$I+}
IF ioresult = 0
THEN
BEGIN
read(m_datei,zaehlung);
close(m_datei);
zaehlungsdatei:=zaehlung.messungsname;
END
ELSE
BEGIN
writeln('Diese Datei existiert nicht!');
writeln('Weiter mit ENTER!');
readln;
END;
END;
PROCEDURE messergebnis_zeigen(i,j,k:byte;kr:kreuzungs_typ;za:zaehl_typ);
VAR richtung : string; zeit,zeit2 : real;
BEGIN
IF j=1 THEN richtung:='links ';
IF j=2 THEN richtung:='gerade';
IF j=3 THEN richtung:='rechts';
zeit:=(k DIV 4) + ((k MOD 4) *15)/100;
k:=k+1;
zeit2:=(k DIV 4) + ((k MOD 4) *15)/100;
write('Str. ',i,' Richt.',richtung,' ',zeit:5:2,'-',zeit2:5:2,' PKW',za.zaehlfeld[i,j,k,1]:3);
write(' LKW',za.zaehlfeld[i,j,k,2]:3);
write(' LZ',za.zaehlfeld[i,j,k,3]:3);
write(' Bus',za.zaehlfeld[i,j,k,4]:3);
write(' Krad',za.zaehlfeld[i,j,k,5]:3);
write(' Rad',za.zaehlfeld[i,j,k,6]:3);
writeln;
END;
PROCEDURE zeige_an;
VAR i,j,k,counter:byte;
BEGIN
counter:=1;
write('Anzeige der Messdaten!, weiter mit ENTER');readln;
clrscr;
FOR i:=1 TO kreuzung.typ DO
FOR j:=1 TO 3 DO
FOR k:=(kreuzung.allgemeine_angaben.anfang*4) TO (kreuzung.allgemeine_angaben.ende*4-1) DO
BEGIN
IF pruefung(i,j,kreuzung)
THEN
BEGIN
messergebnis_zeigen(i,j,k-1,kreuzung,zaehlung);
counter:=counter+1;
IF counter=20 THEN
BEGIN
write('Zwischenhalt, weiter mit ENTER');
readln;
counter:=1;
END;
END;
END;
writeln('Weiter mit ENTER!');
readln;
END;
PROCEDURE zeige_messwerte;
BEGIN
IF kreuzungsdatei='noch keine'
THEN
BEGIN
writeln('Erst eine Kreuzung laden! ');
writeln('Weiter mit ENTER!');
readln;
END
ELSE
BEGIN
lade_messwerte;
zeige_an;
END;
END;
PROCEDURE analyse_1;
TYPE a1_typ=ARRAY[0..23,1..6] OF Integer;
VAR a1:a1_typ;
i,j,anf,ende,a,b,c,d,c1,max,h1,anfa:integer;
PROCEDURE zeichne_balken(h,i:integer);
VAR x,y,n:integer;
BEGIN
gotoxy(1,24);
write('Gesamt:');
gotoxy(i*4+8,24);
IF h > 0 THEN
FOR n:=1 TO h DO
BEGIN
write('²');
x:=wherex - 1;
y:=wherey - 1;
gotoxy(x,y);
END;
END;
BEGIN
clrscr;
max:=0;
write (kreuzung.allgemeine_angaben.bezeichnung);
write (' Datum : ',kreuzung.allgemeine_angaben.datum.tag,'.');
write (kreuzung.allgemeine_angaben.datum.monat,'.');
writeln (kreuzung.allgemeine_angaben.datum.jahr);
write ('Zeit : Von ',kreuzung.allgemeine_angaben.anfang);
writeln ('Uhr bis ',kreuzung.allgemeine_angaben.ende,' Uhr');
writeln ('Wieviel Fahrzeuge passieren pro Stunde die Kreuzung?');
FOR i := 0 TO 23 DO
FOR j := 1 TO 6 DO a1[i,j]:=0;
anf:=kreuzung.allgemeine_angaben.anfang*4;
ende:=kreuzung.allgemeine_angaben.ende*4-1;
FOR a:=1 TO 4 DO
FOR b:=1 TO 3 DO
FOR c:=anf TO ende DO
FOR d:=1 TO 6 DO
BEGIN
c1:=c DIV 4;
a1[c1,d]:=a1[c1,d]+zaehlung.zaehlfeld[a,b,c,d];
END;
write('Stunde: ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(i:4);
writeln;
write('PKW : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(a1[i,1]:4);
writeln;
write('LKW : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(a1[i,2]:4);
writeln;
write('LZ : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(a1[i,3]:4);
writeln;
write('Bus : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(a1[i,4]:4);
writeln;
write('Krad : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(a1[i,5]:4);
writeln;
write('Rad : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(a1[i,6]:4);
writeln;
write('Summe : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO
BEGIN
write((a1[i,1]+a1[i,2]+a1[i,3]+a1[i,4]+a1[i,5]+a1[i,6]):4);
IF (a1[i,1]+a1[i,2]+a1[i,3])>max THEN max:=(a1[i,1]+a1[i,2]+a1[i,3]);
END;
writeln;
max:=max div 10;
anfa:=1;
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO
BEGIN
h1:=(a1[i,1]+a1[i,2]+a1[i,3]) DIV max;
zeichne_balken(h1,anfa);
anfa:=anfa+1;
END;
gotoxy(5,25);
writeln('Weiter mit ENTER!');
readln;
END;
PROCEDURE analyse_2;
TYPE a1_typ=ARRAY[0..23,1..3] OF Integer;
VAR a1:a1_typ;
i,j,anf,ende,a,b,c,d,c1,h1,h2,anfa,max:integer;
PROCEDURE zeichne_balken(h,i:integer);
VAR x,y,n:integer;
BEGIN
gotoxy(1,24);
write('Gesamt:');
gotoxy(i*4+8,24);
IF h > 0 THEN
FOR n:=1 TO h DO
BEGIN
write('²');
x:=wherex - 1;
y:=wherey - 1;
gotoxy(x,y);
END;
END;
BEGIN
clrscr;
write (kreuzung.allgemeine_angaben.bezeichnung);
write (' Datum : ',kreuzung.allgemeine_angaben.datum.tag,'.');
write (kreuzung.allgemeine_angaben.datum.monat,'.');
writeln (kreuzung.allgemeine_angaben.datum.jahr);
write ('Zeit : Von ',kreuzung.allgemeine_angaben.anfang);
writeln ('Uhr bis ',kreuzung.allgemeine_angaben.ende,' Uhr');
writeln;
writeln ('Wie sind die Richtungen am Tag ausgelastet?');
writeln;
FOR i := 0 TO 23 DO
FOR j := 1 TO 3 DO a1[i,j]:=0;
anf:=kreuzung.allgemeine_angaben.anfang*4;
ende:=kreuzung.allgemeine_angaben.ende*4-1;
FOR a:=1 TO 4 DO
FOR b:=1 TO 3 DO
FOR c:=anf TO ende DO
FOR d:=1 TO 6 DO
BEGIN
c1:=c DIV 4;
a1[c1,b]:=a1[c1,b]+zaehlung.zaehlfeld[a,b,c,d];
END;
write('Stunde: ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(i:5);
writeln;
write('links : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(a1[i,1]:5);
writeln;
write('gerade : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(a1[i,2]:5);
writeln;
write('rechts : ');
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO write(a1[i,3]:5);
writeln;
write('Summe : ');
max:=0;
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO
BEGIN
write((a1[i,1]+a1[i,2]+a1[i,3]):5);
IF (a1[i,1]+a1[i,2]+a1[i,3])>max THEN max:=(a1[i,1]+a1[i,2]+a1[i,3]);
END;
max:=max div 10;
writeln;
anfa:=1;
FOR i:=(anf DIV 4) TO ((ende DIV 4)) DO
BEGIN
h1:=(a1[i,1]+a1[i,2]+a1[i,3]) DIV max;
zeichne_balken(h1,anfa);
anfa:=anfa+1;
END;
gotoxy(5,25);
writeln('Weiter mit ENTER!');
readln;
END;
PROCEDURE analyse;
BEGIN
IF kreuzungsdatei='noch keine'
THEN writeln('keine geladene Kreuzungsdatei')
ELSE
BEGIN
analyse_1;
analyse_2;
END;
writeln('Weiter mit ENTER!');
readln;
END;
PROCEDURE kr_zeigen;
BEGIN
IF kreuzungsdatei='noch keine'
THEN writeln('keine geladene Kreuzungsdatei')
ELSE anzeigen_alles;
writeln('Weiter mit ENTER!');
readln;
END;
PROCEDURE me_zeigen;
BEGIN
IF kreuzungsdatei='noch keine'
THEN writeln('keine geladene Kreuzungsdatei')
ELSE zeige_an;
writeln('Weiter mit ENTER!');
readln;
END;
BEGIN
kreuzungsdatei:='noch keine';
zaehlungsdatei:='noch keine';
einleitung;
clrscr;
REPEAT
clrscr;
schluss:=false;
beschreibung;
writeln;
writeln(' ************ Men ************* ');
writeln('k fr das Erfassen und Speichern einer neuen Kreuzung');
writeln(' (neue *.ver-Datei )');
writeln('d fr das Laden und Anzeigen der gespeicherten Daten einer Kreuzung ');
writeln('r fr Anzeigen der momentan geladenen Kreuzung ');
writeln('e fr das Erfassen von Messwerten fr eine vorhandene Kreuzung');
writeln(' (neue *.mes-Datei)');
writeln('z fr das Laden und Zeigen der gespeicherten Daten einer Messung');
writeln('m fr Anzeigen der momentan geladenen Messung ');
writeln('a fr eine kurze Analyse (Summen) von Messdaten');
writeln;
writeln('s fr das Schlieáen des Programms');
writeln;
write ('Ihre Wahl: ');readln(ent);
ent:=upcase(ent);
clrscr;
CASE ent OF
'K' : BEGIN
allgemeine_erfassung;
speichern;
END;
'D' : gespeichertes_zeigen;
'E' : messwerte;
'S' : schluss:=true;
'Z' : zeige_messwerte;
'A' : analyse;
'R' : kr_zeigen;
'M' : me_zeigen;
ELSE
BEGIN
write('ungltige Eingabe, weiter mit ENTER');readln;
END;
END {of case};
UNTIL schluss;
END.