
PROGRAM Blatt3_pas (input, output); {Blatt3.pas - Aufgabenl”sung
												 fr praktische Informatik 1 -
												 das dritte šbungsblatt im WS97/98
												 (c) 1997 Markus Schaber, Uni Ulm}

VAR mode      : CHAR; 	{Auswahl im Hauptmenu}
	 flag,               {Flag fr Beenden des Programms}
	 flah      : BOOLEAN;{Flag fr Beenden der Unterprogramme}
	 summe,              {Summe der eingegebenen Werte}
	 anzahl,             {Anzahl der eingegebenen Werte}
	 abbwert,            {Abbruchwert zum Beenden der Eingabe}
	 eing      : REAL;   {eingegebene Zahl}


PROCEDURE mitwhile; {Durchschnitt mit While-Struktur}
	BEGIN
		WRITELN('Geben sie die Zahlen ein, Fertig mit ',abbwert);
		summe :=0.0;
		anzahl:=0.0;
		flah	:=TRUE;

		WHILE flah DO {jetzt gehts los!}
		BEGIN
			READLN(eing);
			IF eing=abbwert THEN
				flah:=FALSE
			ELSE BEGIN
				summe:=summe+eing;
				anzahl:=anzahl+1
			END
		END;

		IF anzahl=0.0 then {Ergebnis ausgeben}
			WRITELN('Keine Werte eingegeben!')
		ELSE
			WRITELN(anzahl,'Werte eingegeben, der Schnitt ist',summe/anzahl);
	END { mitwhile};


PROCEDURE mitrepeat; {Durchschnitt mit Repeat-Struktur}
	BEGIN
		WRITELN('Geben sie die Zahlen ein, Fertig mit ',abbwert);
		summe :=0.0;
		anzahl:=0.0;
		flah	:=false;

		REPEAT {jetzt gehts los!}
			READLN(eing);
			IF eing=abbwert THEN
				flah:=TRUE
			ELSE BEGIN
				summe:=summe+eing;
				anzahl:=anzahl+1
			END
		UNTIL flah;

		IF anzahl=0.0 then {Ergebnis ausgeben}
			WRITELN('Keine Werte eingegeben!')
		ELSE
			WRITELN(anzahl,'Werte eingegeben, der Schnitt ist',summe/anzahl);
	END { mitrepeat};



PROCEDURE mitif; {Durchschnitt mit While-Struktur}
	LABEL 1;
	BEGIN
		WRITELN('Geben sie die Zahlen ein, Fertig mit ',abbwert);
		summe :=0.0;
		anzahl:=0.0;
		flah	:=TRUE;

1:  	{jetzt gehts los! - pseudoschleife}
			READLN(eing);
			IF eing=abbwert THEN
				flah:=FALSE
			ELSE BEGIN
				summe:=summe+eing;
				anzahl:=anzahl+1
			END;
		IF FLAH THEN GOTO 1;

		IF anzahl=0.0 then {Ergebnis ausgeben}
			WRITELN('Keine Werte eingegeben!')
		ELSE
			WRITELN(anzahl,'Werte eingegeben, der Schnitt ist',summe/anzahl);
	END {mitif};




PROCEDURE mitcase; {Durchschnitt mit While-Struktur}
	LABEL 2;
	BEGIN
		WRITELN('Geben sie die Zahlen ein, Fertig mit ',abbwert);
		summe :=0.0;
		anzahl:=0.0;
		flah	:=TRUE;

2:		{Pseudoschleife 2 - jetzt gehts los!}
			READLN(eing);
			IF eing=abbwert THEN
				flah:=FALSE
			ELSE BEGIN
				summe:=summe+eing;
				anzahl:=anzahl+1
			END;
		CASE flah OF
			TRUE: GOTO 2;
			FALSE: BEGIN
				IF anzahl=0.0 then {Ergebnis ausgeben}
					WRITELN('Keine Werte eingegeben!')
				ELSE
					WRITELN(anzahl,'Werte eingegeben, der Schnitt ist',summe/anzahl);
			END;
		END;
	END {mitcase};


BEGIN {Hauptprogramm}
	flag:=FALSE;
	abbwert:=0.0;
	WRITELN('Markus Schaber proudly presents:');
	WRITELN('');
	WRITELN('Blatt 3 - den ultimativen Durchschneider!');
	WRITELN('');
	REPEAT
		WRITELN('Blatt3 berechnet nach 4 w„hlbaren Methoden den Durchschnitt');
		WRITELN('von einzugebenden Zahlen.');
		WRITELN('w - WHILE   -Struktur');
		WRITELN('r - REPEAT  -Struktur');
		WRITELN('i - IF      -Struktur');
		WRITELN('c - CASE    -Struktur');
		WRITELN('a - Abbruchwert vorgeben');
		WRITELN('q - dieses Programm verlassen :-((');
		READLN(mode);
		CASE mode OF
			'w': mitwhile;
			'r': mitrepeat;
			'i': mitif;
			'c': mitcase;
			'a':
				BEGIN
					WRITELN('Bitte geben Sie den Abbruchwert ein');
					READLN(abbwert)
				END;
			'q': flag:=TRUE;
		END;
	UNTIL flag;
   WRITELN('(c) 1997 Markus Schaber, University of Ulm, Germany');
	WRITELN('Tschssili!');
END {Blatt3.pas}
.
