Variable nur jeden x-ten Schritt weiterzählen

Gast #4781899
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
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
>> 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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.