Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

FOR...NEXT-Schleife: Formel gesucht

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Raphael



Anmeldungsdatum: 17.03.2008
Beiträge: 18
Wohnort: Saarbrücken

BeitragVerfasst am: 17.03.2008, 07:28    Titel: FOR...NEXT-Schleife: Formel gesucht Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4189
Wohnort: ~/

BeitragVerfasst am: 17.03.2008, 09:13    Titel: Antworten mit Zitat

Suchst du das hier?
Code:
titelzaehler% = (seite%-1)*6 + INT((feld%-1)/3) + 1

_________________
Meine Großeltern waren als junge Menschen sehr modern - sie hatten schon damals in der Badewanne Email.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2455
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 17.03.2008, 10:28    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4189
Wohnort: ~/

BeitragVerfasst am: 17.03.2008, 13:31    Titel: Antworten mit Zitat

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.
_________________
Meine Großeltern waren als junge Menschen sehr modern - sie hatten schon damals in der Badewanne Email.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 306

BeitragVerfasst am: 17.03.2008, 13:37    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Raphael



Anmeldungsdatum: 17.03.2008
Beiträge: 18
Wohnort: Saarbrücken

BeitragVerfasst am: 17.03.2008, 13:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4189
Wohnort: ~/

BeitragVerfasst am: 17.03.2008, 14:42    Titel: Antworten mit Zitat

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.
_________________
Meine Großeltern waren als junge Menschen sehr modern - sie hatten schon damals in der Badewanne Email.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Raphael



Anmeldungsdatum: 17.03.2008
Beiträge: 18
Wohnort: Saarbrücken

BeitragVerfasst am: 18.03.2008, 06:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz