Variable nur jeden x-ten Schritt weiterzählen

Gast #4781899
Lesenswert?
• ▲
▼
Ginge folgender Ansatz (bin kein C Experte und hab keinen C Compiler 
aufm Rechner):

Wenn i die Variable ist, die hochgezählt wird, steht in der Schleife 
normalerweise i++ (equivalent zu i+i).

Ersetze das mit einer Hilfsvariablen a: i+a

Innerhalb der Schleife wird eine if Abfrage gesetzt. Wenn die wahr ist, 
wird a auf 1 gesetzt. Dann stünde in der Schleife i+1.

Wenn die Bedingung nicht wahr ist, wird a auf 0 gesetzt.

Passt das?
Gast #4781900
Lesenswert?
• ▲
▼
Man braucht eigentlich nicht mal eine zweite  Schleife.

Dies kann man problemlos in der eigentlichen zählschleife abhandeln
Eine weitere variable definieren und diese wird auch mit jeden Durchlauf 
erhöht.

Nur das man dort dann eben prüft ob der stand beispielsweise schon 3 
ist, falls ja variable 1 erhöhen und variable zwei auf 0 zurücksetzen 
fertig
Gast #4781984
Lesenswert?
• ▲
▼
>> variable += (schleifenzaehler % x)==(x-1) ? 1 : 0;

Das ginge hübscher mit

variable += (schleifenzaehler % x) ? 0 : 1;

ABER:
Wenn so eine Zählvariable eine begrenzte Ganzzahl ist, hat man
auch noch (da sie nie auf Null zurückgesetzt wird) das Problem
des Überlaufs!

Einfacher Fall:
x = 7,
Schleifenzähler ist eine uint8 (0...255)
Bis 252 (= 36 * 7) klappt es.
259  (= 37 * 7) wird aber zu 3, also ist die nächste
Erhöhung erst nach 10 Schritten.

Mit Long Int kommt der Fehler auch, nur seltener. ;-)

Also nimm meine obengenannte Lösung!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren