MODULE Graph3T; IMPORT Graph3, In, Out; PROCEDURE ProgMain*; VAR g1: Graph3.GraphT; x,y: INTEGER; code: CHAR; BEGIN (*ProgMain*) REPEAT In.Echo(FALSE); In.Prompt("?/1/2/3/4/5/E: "); In.Char(code); code:=CAP(code); In.Echo(TRUE); IF ~In.Done THEN code:="E" END; (*if*) CASE code OF "0", "H", "?": Out.String("(?) HILFE der Befehlscodes: ?=Hilfe / 1=Init / 2=Kante / 3=AdjazenzMatrix / 4=FunktionsTest / 5=Loeschen / E=Ende") | "1", "I": Out.String("(1) INIT Graph: "); In.Prompt("Anzahl Knoten="); In.Int(x); g1.Init(x) | "2", "K": Out.String("(2) KANTE einfuegen: "); In.Prompt("Knoten1="); In.Int(x); Out.String(" "); In.Prompt("Knoten2="); In.Int(y); g1.SetEdge(x,y) | "3", "A", "M": Out.F2("(3) AUSGABE: (Anzahl Knoten=# Anzahl Kanten=#)$", g1.vertexn, g1.edgen); g1.PrGraph; g1.PrComps; | "4", "T", "F": Out.F("(4) FUNKTIONSTEST: Graph besteht aus # Komponente(n) und ist ", g1.NrComps()); IF g1.IsTree() THEN Out.String("EIN Baum.") ELSE Out.String("KEIN Baum.") END; (*if*) Out.Ln; Out.String(" Bruecke(n): "); FOR x:=0 TO g1.vertexn-1 DO FOR y:=x+1 TO g1.vertexn-1 DO IF g1.IsBridge(x,y) THEN Out.F2(" #--# ",x,y) END (*if*) END (*for*) END (*for*) | "5", "L": Out.String("(5) LOESCHEN Graph"); g1.CleanUp | "6", "E": Out.String("(6) ENDE des Tests"); ELSE Out.String("(x) FEHLER!!! Befehlscodes: ?=Hilfe / 1=Init / 2=Kante / 3=Adjazenzmatrix / 4=FunktionsTest / 5=Loeschen / E=Ende") END; (*case*) Out.Ln UNTIL ~In.Done OR (code="E") OR (code="6") END ProgMain; END Graph3T.