Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Raphael
Anmeldungsdatum: 17.03.2008 Beiträge: 18 Wohnort: Saarbrücken
|
Verfasst am: 17.03.2008, 08:28 Titel: FOR...NEXT-Schleife: Formel gesucht |
|
|
Hallo in die Runde!
Ich will eine FOR...NEXT-Schleife erstellen, komme aber partout nicht auf die Formel. Hier kurz eine ganz primitive Aufstellung, aus der sich die Gesetzmäßigkeit erkennen läßt:
IF seite% = 1 AND feld% = 1 THEN titelzaehler% = 1
IF seite% = 1 AND feld% = 2 THEN titelzaehler% = 1
IF seite% = 1 AND feld% = 3 THEN titelzaehler% = 1
IF seite% = 1 AND feld% = 4 THEN titelzaehler% = 2
IF seite% = 1 AND feld% = 5 THEN titelzaehler% = 2
IF seite% = 1 AND feld% = 6 THEN titelzaehler% = 2
IF seite% = 1 AND feld% = 7 THEN titelzaehler% = 3
IF seite% = 1 AND feld% = 8 THEN titelzaehler% = 3
IF seite% = 1 AND feld% = 9 THEN titelzaehler% = 3
IF seite% = 1 AND feld% = 10 THEN titelzaehler% = 4
IF seite% = 1 AND feld% = 11 THEN titelzaehler% = 4
IF seite% = 1 AND feld% = 12 THEN titelzaehler% = 4
IF seite% = 1 AND feld% = 13 THEN titelzaehler% = 5
IF seite% = 1 AND feld% = 14 THEN titelzaehler% = 5
IF seite% = 1 AND feld% = 15 THEN titelzaehler% = 5
IF seite% = 1 AND feld% = 16 THEN titelzaehler% = 6
IF seite% = 1 AND feld% = 17 THEN titelzaehler% = 6
IF seite% = 1 AND feld% = 18 THEN titelzaehler% = 6
IF seite% = 2 AND feld% = 1 THEN titelzaehler% = 7
.
.
.
Es geht weiter bis einschl. seite% = 17 und titelzähler% = 99.
Klar, daß ich unmöglich einen Block von mehreren hundert Zeilen schreiben kann, um die Variable titelzaehler% zu ermitteln.
Wenn mir jemand helfen kann, wäre super!
Vielen Dank.
Raphael |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4603 Wohnort: ~/
|
Verfasst am: 17.03.2008, 10:13 Titel: |
|
|
Suchst du das hier?
Code: | titelzaehler% = (seite%-1)*6 + INT((feld%-1)/3) + 1 |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2509 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 17.03.2008, 11:28 Titel: |
|
|
Kleine Optimierung:
Code: | titelzaehler% = (seite% - 1) * 6 + (feld% - 1) \ 3 + 1 |
d.h. für die Integerdivision gibt es einen speziellen Operator, sonst muss das System mit "teuren" Fliesskommazahlen ("/"!) herumoperieren, wo es nicht nötig ist.
Noch stärker optimiert
Code: | titelzaehler% = seite% * 6 + (feld% - 1) \ 3 - 5 |
d.h. Algebra, Ausmultiplizieren und Vereinfachen angewendet. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4603 Wohnort: ~/
|
Verfasst am: 17.03.2008, 14:31 Titel: |
|
|
Der Backslash funktioniert aber nur in FreeBASIC. Sollte es ein QBASIC-Programm sein (was ich wegen der Suffixe vermute), musst du bei der Version mit dem Slash bleiben. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 339
|
Verfasst am: 17.03.2008, 14:37 Titel: |
|
|
Bei QB gibts afaik ein / für normale Divisionen und ein \ für Ganzzahldivisionen. _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
Raphael
Anmeldungsdatum: 17.03.2008 Beiträge: 18 Wohnort: Saarbrücken
|
Verfasst am: 17.03.2008, 14:43 Titel: |
|
|
Ist QuickBasic bzw. Basic PDS, da gibt's durchaus den \ für ganzzahlige Divisionen.
Ich werde den Algo heute abend mal ausprobieren.
@dreael: Darf ich fragen, wie Du darauf gekommen bist? |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4603 Wohnort: ~/
|
Verfasst am: 17.03.2008, 15:42 Titel: |
|
|
Der Unterschied pro seite% beträgt 6 (seite%=1 und feld%=1 ergibt titelzaehler%=1; seite%=2 und feld%=1 ergibt titelzaehler%=7 usw), deshalb die Rechenoperation seite%*6. Je dreimal feld% gehören zusammen (feld%=1, feld%=2 und feld%=3 ergeben denselben titelzaehler% usw.), deswegen die Operation (feld%-1)\3. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Raphael
Anmeldungsdatum: 17.03.2008 Beiträge: 18 Wohnort: Saarbrücken
|
Verfasst am: 18.03.2008, 07:18 Titel: |
|
|
Ich hab's ausprobiert, funktioniert. Vielen Dank, ihr habt mir sehr geholfen. So ganz verstanden habe ich diese Formel zwar immer noch nicht, aber ich werde mir nomoreds Erklärung mal als Kommentar in den Quelltext schreiben. |
|
Nach oben |
|
|
|