Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Kleines C-Problem

Nobody666 / 4 Antworten / Flachansicht Nickles

Hallo,


hab ein kleines Problem mit einem C-Programm. WarnMeldung zählt nicht im 1er Schritt nach unten, sondern mal im 1 er Schitt und mal im 2 er Schritt, d.h. in einem Ablauf 10001,10000,9999,9998 im anderen z.B. 10003,10001,9999,9998. Genau hier ist mein Problem, das dann die if Schleife übersprungen wird, da der Rest hier nicht gleich Null wird. Wie kann ich das am besten verpacken, damit mir auch in diesem Fall hier die Nachricht einmal angezeigt wird?


 Warn_20_Rest = WarnMeldung % 500;
      if (Warn_20_Rest == 0)
      {
       printf("Adressen gehen aus);
      } else....


 


 

bei Antwort benachrichtigen
Andreas42 Nobody666 „Hi, wie meinst du das, die modulo operation kann doch nie kleiner Null werden,...“
Optionen

Hi!

Ups, erwicht, hab' den Modulo ignoriert.

Sorry, hab' nicht genau hingesehen. Also von Vorne:

Modulo ist der ganzzahlige Divisionsrest. Und du hast Werte, die nie komplett teilbar sind (-> MOD(x) 0)

Letzendlich willst du den kleinsten möglichen MOD(x)-Wert abfangen. Der Wert um den runtergezählt wird ist konstant.

Letzenldich müsstest du mit dem grössten möglichen Zählwert vergleichen:

Warn_20_Rest = WarnMeldung % 500;
if (Warn_20_Rest {
printf("Adressen gehen aus);
} else....

Noch einfacher ist natürlich, du zählst die Aufrufe dieser Stelle in einer eigenen Variable und fragst die dann ab.

Ich hoffe, diesmal klappt's. ;-)

Bis denn
Andreas

PS: Mir ist allerdings nicht klar, warum du alle 500 Adressen die Meldung ausgibst. Bei 500 Adressen sind schlieslich noch 500 da und es würde trotzdem die Meldung ausgegeben.

Ich würde da eher vorschlagen einen Sicherheitsbestand an Adrssen zu verwalten und dann den aktuellen Bastand um die entnommen (oder wie auch immer weniger gewordenen) Adressen reduzieren. Wenn dieses Ergebnis (der neue Besatnd) kleiner ist als der Sicherheitsbestand, dann geht's Blaulicht an. Ist der neue Bestand kleiner Null, gibt's Ärger mit dem Boss. ;-)

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen