Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Viele Bedingungen mit Checkboxes und Randomize
dunkles_etwas - Mo 23.10.06 22:28
Titel: Viele Bedingungen mit Checkboxes und Randomize
hallo zusammen,
ich möchte bei einem rechenprogramm per checkbox aktivieren könenen, welche grundrechenarten bei der zufallsgenerierten aufgabenstellung verwendet werden
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ß
Narses - 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
dunkles_etwas hat folgendes geschrieben: |
ich möchte bei einem rechenprogramm per checkbox aktivieren könenen, welche grundrechenarten bei der zufallsgenerierten aufgabenstellung verwendet werden
[...]
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| Rechenzeichen := Random(4)+1; [...] if (Rechenzeichen = 1) then VorzeichenLabel.Caption := '+'; if (Rechenzeichen = 2) then VorzeichenLabel.Caption:='-'; if (Rechenzeichen = 3) then VorzeichenLabel.Caption:='*'; if (Rechenzeichen = 4) then 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:
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
dunkles_etwas - 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 !
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!