Brauche mal eure Hilfe!

Hi!

Hiffe mir kann jemand helfen, bei vollgenden Fragen komme ich nciht weiter:

Aufgabe: Erweitern Sie das Programm so, dass ständig die Häufigkeit von Zustand a und Zustand b aus dem Monitor angezeigt werden!
Ersetzen Sie im 4. Teil die harte Abbruchbedingung KeyPressed durch eine Sinnvolle Bedingung ( das Programm soll enden, wenn alle Felder mit Smily oder Strichen ausgefüllt sind)

Vielen Dank für eure Hilfe!!!

Hier das Programm:

PROGRAM Ein_Phaenomen;
{ *** Phaenom.pas *** }
USES Crt;

CONST cZeilenzahl = 10;
cSpaltenzahl = 20;
p = 1; {Pause nach jedem Schritt in ms}
{f�r langsame PCs den Wert auf 0 setzen!}
TYPE TZeilen = 1…cZeilenzahl;
TSpalten = 1…cSpaltenzahl;
TZustand = (a, b);
TZustandsmatrix = ARRAY [TZeilen, TSpalten] OF TZustand;

VAR f : TZustandsmatrix;
z0, z1: TZeilen;
s0, s1: TSpalten;

{---------------------- 1. T e i l ------------------------}

PROCEDURE Druck(w: TZustand);

BEGIN
CASE w OF
a: Write(Chr(1)); { „weiáes Gesicht“ }
b: Write(’-’)
END;
END;

{---------------------- 2. T e i l ------------------------}

PROCEDURE ZufaelligeAnfangsbelegung(VAR f: TZustandsmatrix);

TYPE TNullBisEins = 0…1;

VAR i: TZeilen;
k: TSpalten;
r: TNullBisEins;

BEGIN
FOR i := 1 TO cZeilenzahl DO
FOR k := 1 TO cSpaltenzahl DO
BEGIN
r := Random(2);
f[i, k] := TZustand®;
GotoXY(k, i);
Druck(f[i, k]);
END;
writeln;writeln;
writeln(‚Anfangszustand ist initialisiert!‘);
writeln(‚Zum Start bitte dr�cken!‘);
readln;
write(‚Und nun geduldig beobachten!‘,chr(1));
END;

{---------------------- 3. T e i l ------------------------}

PROCEDURE ZufaelligeWahlEinesNachbarn(zAlt: TZeilen;
sAlt: TSpalten;
VAR zNeu: TZeilen;
VAR sNeu: TSpalten);

TYPE TNullBisSieben = 0…7;

VAR zeile, spalte: Integer;
r : TNullBisSieben;

BEGIN
r := Random(8); { r ist der zuf„llige Nachbar }

CASE r OF
0…2: zeile := zAlt - 1;
3, 7: zeile := zAlt;
4…6: zeile := zAlt + 1
END;

CASE r OF
2…4: spalte := sAlt - 1;
1, 5: spalte := sAlt;
6, 7, 0: spalte := sAlt + 1
END;

{ Ber�cksichtigung der Seiten und Ecken: }

IF zeile = 0 THEN zeile := cZeilenzahl;
IF zeile = cZeilenzahl + 1 THEN zeile := 1;
IF spalte = 0 THEN spalte := cSpaltenzahl;
IF spalte = cSpaltenzahl + 1 THEN spalte := 1;

zNeu := zeile; sNeu := spalte
END;

{---------------------- 4. T e i l ------------------------}

BEGIN
ClrScr;
GotoXY(22, 6);
Write(’" D o p p e l t e r Z u f a l l "’);
GotoXY(27, 9);
Writeln(’ Beginn mit !’);
Writeln;
GotoXY(27, 11);
Writeln(’ Abbruch durch !’);
readln;
ClrScr;
Randomize;
ZufaelligeAnfangsbelegung(f);

REPEAT
z0 := Random(cZeilenzahl) + 1;
s0 := Random(cSpaltenzahl) + 1;
ZufaelligeWahlEinesNachbarn(z0, s0, z1, s1);
f[z0, s0] := f[z1, s1]; { šbernahme des Zustands }
GotoXY(s0, z0);
Delay§;
Druck(f[z0, s0])
UNTIL KeyPressed
END.

Hallo,

wo _genau_ liegt dein Probelm?

Wenn du mir das schilderst, helfe ich gerne.
Zum Hausaufgabenlösen habe ich keine Lust.

LG
Jochen