Universität Ulm,
Fakultät für Mathematik und Wirtschaftswissenschaften,
SAI
Lösung zu Blatt 7 --- Allgemeine Informatik I (WS 1998)
6. Dreiecke
MODULE triangle;
(* Was fuer ein Dreieck haben wir denn? *)
FROM InOut IMPORT WriteLn, WriteString;
FROM RealInOut IMPORT WriteReal, ReadReal;
VAR x, y, z, tmp: REAL;
BEGIN
WriteString("Bitte geben Sie die 3 Seitenlaengen ein:"); WriteLn;
WriteString("Bitte erste Zahl: ");
ReadReal(x);
WriteString("Bitte zweite Zahl: ");
ReadReal(y);
WriteString("Bitte dritte Zahl: ");
ReadReal(z);
IF (y < x) THEN (* Sort x, y, and z *)
tmp := y; y := x; x := tmp;
END;
IF (z < x) THEN
tmp := z; z := x; x := tmp;
END;
IF (z < y) THEN
tmp := z; z := y; y := tmp;
END; (* Now they are sorted *)
IF (x <= 0.0) OR (x + y - z <= 0.000000001) THEN
WriteString("Kein gueltiges Dreieck");
ELSIF (ABS(x - y) < 0.000000001) AND (ABS(x - z) < 0.000000001) THEN
WriteString("Ein gleichseitiges Dreieck");
ELSIF (ABS(x - y) < 0.000000001) OR (ABS(y - z) < 0.000000001) THEN
WriteString("Ein gleichschenkliges Dreieck");
ELSE
WriteString("Ein normales Dreieck");
END;
WriteLn;
END triangle.
7. Zählen
MODULE lc;
(* liest Folge von Zeichen und zaehlt die Klein- und Grossbuchstaben,
sowie Ziffern, Klammern und Rest.
*)
FROM InOut IMPORT Read, WriteCard, WriteString, WriteLn, Done;
FROM SysExit IMPORT Exit;
VAR
ch:CHAR;
zahl, (*ermittelte Zahl*)
kb, gb, zi, kl, re: CARDINAL;
BEGIN
kb := 0; gb := 0; zi := 0; kl := 0; re := 0;
Read(ch);
WHILE Done DO (*solange also Read erfolgreich*)
CASE ch OF
| '0' ..'9': INC(zi);
| 'a' .. 'z': INC(kb);
| 'A' .. 'Z': INC(gb);
| '(', ')', '[', ']', '{', '}' : INC(kl);
ELSE
INC(re);
END;
Read(ch)
END;
WriteString("Es wurden "); WriteCard(zi, 4); WriteString(" Ziffern, ");
WriteCard(kb, 4); WriteString(" Kleinbuchstaben, "); WriteCard(gb, 4);
WriteString(" Grossbuchstaben, "); WriteLn; WriteCard(kl, 4);
WriteString(" Klammern und "); WriteCard(re, 4);
WriteString(" sonstige Zeichen gelesen."); WriteLn;
END lc.
Ingo Melzer, 08 Dezember 1998