Autor Beitrag
Anton.Topic
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 14.04.05 16:37 
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:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
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(r);
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(p);
Druck(f[z0, s0])
UNTIL KeyPressed
END.


Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt.


Zuletzt bearbeitet von Anton.Topic am Do 14.04.05 20:12, insgesamt 1-mal bearbeitet
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 14.04.05 16:50 
Moin,

willkommen im Forum und der Sparte Hausaufgaben. :mrgreen:

Turbo-Pascal können hier einige. 8) Was ist Zustand a und b ? Solange der Code nicht formatiert ist, guck ich ihn mir nicht groß an. Vermute das muß morgen früh fertig sein ?

_________________
Gruß
Hansa
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Do 14.04.05 16:56 
Hallo,
der Titel Deines Beitrages ist nicht aussagekräftigt genug. Man weiß nicht genau, um was es geht. Bitte ändere ihn entsprechend! Dabei kannst Du Turbo Pascal aber auch in den Titel aufnehmen.
Dies kannst Du tun, indem Du in Deinem ersten Beitrag auf "Edit" klickst und den Titel dort änderst.

Dazu hier auch noch der Auszug aus den Richtlinien:
Richtlinien hat folgendes geschrieben:
1.2 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist. Eine Pseudocodezeile oder die Nennung des Objektes, um welches es sich in dem Beitrag handelt, helfen da schon mehr weiter. Wenn Du beispielsweise wissen möchtest, wie es möglich ist, eine Integer-Variable in das String-Format zu konvertieren, würde ein Beitrag wie etwa "Integer zu String" oder "Integerkonvertierung" anderen Forenmitgliedern einen kurzen Überblick über die eigentliche Fragestellung verschaffen. So ist es möglich gezielter Lösungen für Probleme zu finden. Zudem solltest du immer daran denken: Der Fragesteller möchte etwas von den anderen Usern - nicht umgekehrt.


Vielen Dank

Gruß,

uwe
Anton.Topic Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 14.04.05 20:14 
Danke für das editieren und den hinweiss mit dem Titel.

Danke hansa für deine Antwort. Ja, morgen wäre natürlich toll. Vielleicht kann mir ja noch jemand helfen? Leider hat absolut niemand aus meinem Kurs verstanden was der Lehrer will und morgen will er damit jemanden mündlich dran nehmen, und das bin sicher ich.

Zustand A und Zustand B ist jeweils entweder ein Smily oder ein Strich.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 14.04.05 23:59 
Was hast du denn überhaupt schon gemacht? Wir lösen hier nicht einfach so die Hausaufgaben anderer. Bitte stelle konkrete Fragen.
Bitte formatiere auch deinen Code schöner bzw. hänge die PAS-Datei als Anhang an. Du solltest vielleicht auch erklären, was das Programm genau macht.

:arrow: Offenbar erwartest du von uns, dass wir die 120 Zeilen fast unkommentierten und schlecht formatierten Code studieren und dir eine Musterlösung schreiben, welche du dann deinem Lehrer abgeben kannst. So geht's natürlich nicht.
Anton.Topic Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 15.04.05 06:46 
nein, ein denkanstoß hätte gereicht. weil ich zuerst absolut nicht durchgeblickt habe. ich weiss nicht genau obs stimmt was ich jetzt geschrieben habe, aber das werde ich in der 3. stunde sehen :)

wenns gestimmt hat pooste ich es gerne, vielleicht kann es ja mal jemand anderes helfen.