Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Kleines C-Problem

Nobody666 / 4 Antworten / Baumansicht 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 „Kleines C-Problem“
Optionen

Hi!

Warum nicht auf keiner gleich Null testen?

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Nobody666 Andreas42 „Hi! Warum nicht auf keiner gleich Null testen? Bis denn Andreas“
Optionen

Hi,
wie meinst du das, die modulo operation kann doch nie kleiner Null werden, oder? - Die Meldung soll alle 500 Adressen angezeigt werden.
mfg
Nobody

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
Nobody666 Andreas42 „Hi! Ups, erwicht, hab den Modulo ignoriert. Sorry, hab nicht genau hingesehen....“
Optionen

Hallo,
danke für deine schnelle Hilfe,
werde deinen vorschlag gleich in die Tat umsetzen.
Bis dann
mfg
Nobody

bei Antwort benachrichtigen