Autor Beitrag
dunkles_etwas
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 23.10.06 22:28 
hallo zusammen,
ich möchte bei einem rechenprogramm per checkbox aktivieren könenen, welche grundrechenarten bei der zufallsgenerierten aufgabenstellung verwendet werden


ausblenden volle Höhe 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:
procedure TForm1.NeueAufgabeButtonClick(Sender: TObject);
begin

ErgebnisLabel.visible:=false;

randomize;
Zahl1:=random(20)+1;
Zahl2:=random(20)+1;

//das wäre nun für eine stinknormale aufgabenstellung,
  bei der alle 4 grundrechenarten verwendet werden

randomize;
Vorzeichen:=random(4)+1;

LabelZahl1.caption:=IntToStr(a);
LAbelZahl2.caption:=IntToStr(b);



if Vorzeichen=1 then VorzeichenLabel.caption:='+';
if Vorzeichen=2 then VorzeichenLLabel.caption:='-';
if Vorzeichen=3 then VorzeichenLLabel.caption:='*';
if Vorzeichen=4 then VorzeichenLLabel.caption:='/';

//"Zahl1" und "Zahl2" werden 
  dann eben zusammen mit dem "Vorzeichen"
  mit einem klick auf den lösungs-button 
  ausgerechnet und in ein ErgebnisLabel eingetragen

procedure TForm1.loesungClick(Sender: TObject);
begin
ErgebnisLabel.visible:=true;
if e=1 then
ErgebnisLabel.caption:=intToStr(a+b);
if e=2 then
ErgebnisLabel.caption:=intToStr(a-b);
if e=3 then
ErgebnisLabel.caption:=intToStr(a*b);
if e=4 then
ErgebnisLabel.caption:=FloatToStr(a/b);

end;
 
end;


ich möchte jetzt allerdings, dass der benutzer selbst auswählen kann, welche rechenarten er benutzen möchte.
also müsste ich für jede kombination der 4 checkboxes dann einen neuen randomize-befehl schreiben und das wird sehr sehr viel.
mit "if-then" bedingungen wird das absolut nichts, denke ich.
wie bekomme ich es dennoch hin, ohne mich totzutippen.
habe in der hilfe in delphi zu "case" nachgelesen, nur bringt mich das nicht besonders weiter...
wer weiß rat oder kann erläutern ? :)

gruß
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 23.10.06 23:05 
Moin und :welcome: im Forum!

2 Sachen zu Anfang:
a) nimm doch bitte die Delphi-Tags für den Code, dann haben wir auch das Syntax-Highlighting. ;)
b) das ist kein "Vorzeichen", sondern ein "Rechenzeichen" oder "Operator", von dem du da sprichst. :D

user profile icondunkles_etwas hat folgendes geschrieben:
ich möchte bei einem rechenprogramm per checkbox aktivieren könenen, welche grundrechenarten bei der zufallsgenerierten aufgabenstellung verwendet werden
[...]
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Rechenzeichen := Random(4)+1;
[...]
if (Rechenzeichen = 1then VorzeichenLabel.Caption := '+';
if (Rechenzeichen = 2then VorzeichenLabel.Caption:='-';
if (Rechenzeichen = 3then VorzeichenLabel.Caption:='*';
if (Rechenzeichen = 4then VorzeichenLabel.Caption:='/';

ich möchte jetzt allerdings, dass der benutzer selbst auswählen kann, welche rechenarten er benutzen möchte.
also müsste ich für jede kombination der 4 checkboxes dann einen neuen randomize-befehl schreiben

Wenn ich das richtig sehe, dann gibt es da keine Kombinationen, sondern nur eine Auswahl, oder? ;) Du bestimmst zwei Zahlen, einen Operator (aus einer Menge von 4) und machst daraus eine Aufgabe. Wenn du jetzt nicht alle Operatoren zulassen willst, dann mach eine Schleife drum und verlasse diese erst, wenn du einen "gültigen" Operator "gezogen" hast. ;)

Ach ja, und das case benutzt man z.B. so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
case Rechenzeichen of
  1: VorzeichenLabel.Caption := '+';
  2: VorzeichenLabel.Caption := '-';
  3: VorzeichenLabel.Caption := '*';
  4: VorzeichenLabel.Caption := '/';
end;

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
dunkles_etwas Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 23.10.06 23:29 
Titel: danke!
hallo, danke erstmal :)

a) jep, hab auf die schnelle nur CODE gesehn, sorry ;)
b) auch das hab ich verplant. mathe ist nicht meine stärke und es ist so spät...*tütütü*

ansonsten case bringts ja echt den quelltext zu komprimieren, hab dauernd mit den "if's" gekämpft.
nunja, ansonsten sollte mich noch etwas mehr auskennen. hab noch nie schleifen verwendet *blöd*
ich meld mich dann sobald ich weiter weiss und frag dann noch etwas konkreter.
danke !