Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte:
Ein sehr guter Beitrag von Elias
Ideen sammeln, umsetzen, Fehler ausmerzen, Tipps holen und geben, Fragen stellen, Programmierprobleme lösen...
von Alex » Mo 27. Okt 2003, 23:17
Hi,
Jungs und Mädlz. Ich verzwiefle. Ich hab mir heute was ganz unsinniges einfallen lassen. Ein Prog soll 2 Zufallszahlen gleichsetzen und ne Meldung ausgeben, wenn sie gleich sind. Hier mein Code:
ClrText
0->I
"Zahl A"?->A
"Zahl B"?->B
Lbl 1
Int ARan#->C
Int BRan#->D
I+1->I
If C=D Then Goto 2
Else Goto 1
Lbl 2
"A gleich B"
"Benoetigte Versuche:"I
Fehler in Zeile 5 beim Label. Das gibts doch net. Ich verzeifel!! Hilfe*gg*
-
Alex
-
von BCGSR » Di 28. Okt 2003, 00:15
ClrText
0->I
"Zahl A"?->A
"Zahl B"?->B
Lbl 1
Int ARan#->C
Int BRan#->D
I+1->I
If C=D Then Goto 2
Else Goto 1
Lbl 2
"A gleich B"
"Benoetigte Versuche:"I
1. Du hast ein IfEnd vergessen. Der TR springt immer wieder in die gleiche If-Abfrage, ohne das diese beendet wird. Nach 10 Ebenen ist damit Schluss und es müsste ein Stack-Error kommen. Allerdings kann der Fehler sich auch anders äußern... also mehr ne Vermutung.
Ersetzte Zeile 9 und 10 durch
C=D=>Goto 2
Goto 1
Macht genau das gleiche und du bist auf der sicheren Seite, weil du die Verschiedenen Ebenen nicht verletzt.
-
BCGSR
-
von ph » Di 28. Okt 2003, 20:17
goto~lbl stinken sowieso ein wenig, ersetz die struktur doch durch eine do~lpwhile-schleife nach dem motto:
Do
...
LpWhile D=C
und so weiter
ph
-
ph
-
von Alex » Mi 29. Okt 2003, 20:08
Zitat:Orginal von ph
Do
...
LpWhile D=C
Wie? Und danach? wieder goto Lbl, oder? Aber was soll der dann "loopen"? Wenn D=C soll er doch weiter machen. Meinst Du D=/C
-
Alex
-
von ph » Mi 29. Okt 2003, 20:24
Jepp, meine Do:LpWhile D<>C dann kannst du das Lbl 1 ~ Goto 1 weglassen:
Do
Int ARan#->C
Int BRan#->D
I+1->I
LpWhile C<>D
"<>" is ungleich, ne?!
Das müsste gehen, ist scheller und eleganter.
-
ph
-
von BCGSR » Do 30. Okt 2003, 10:08
Und da du ja sicher sehr viele Durchläufe machen willst, lohnt es sich noch mehr zu optimieren. Z.B. so:
1->I
Do
Isz I
LpWhile Int ARan#<>Int BRan#
Kannst dann zwar die beiden gleichen Zahlen nicht auslesen, aber sollte merklich schneller sein, weil die Zahlen ja nicht erst in den Variablen-Speicher geschrieben werden müssen.
-
BCGSR
-
von BCGSR » Fr 31. Okt 2003, 00:33
Der zählt die Variable um eins hoch. Wird diese dadurch Null, wird der folgende Befehl übersprungen. Ist ja aber hier nicht der Fall, wenn du mit 1 anfängst, und somit isses ein klasse Hochzählbefehl :)
-
BCGSR
-
von Alex » Fr 31. Okt 2003, 10:08
Zitat:Orginal von BCGSR
...klasse Hochzählbefehl...
Sprich I+1->I?
[Editiert durch Alex am Freitag, Oktober 31, 2003 @ 10:08]
-
Alex
-
von Max » Fr 31. Okt 2003, 10:22
Zitat:Orginal von Alex
Sprich I+1->I?
genau!
Und Dsz ist das Gegenteil, also runterzählen.
[Editiert durch Max am Freitag, Oktober 31, 2003 @ 10:23]
-
Max
-
Zurück zu Graphikrechner (CFX 9850 G/GB/GC; FX 9860 G/ GSD; FX 9750G; FX 7400G) ohne CAS
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 23 Gäste