Modulo

Hallo,

ich möchte eine 4-stellige Zahl in die einzelnen Ziffern umwandeln.
Mein Code:

ziffer1=zahlerstand/1000;
  ziffer1modulo=zahlerstand%1000;
  
  ziffer2=ziffer1modulo/100;
  ziffer2modulo=ziffer2&100;
  
  ziffer3=ziffer2modulo/10;
  
  ziffer4=ziffer3%10;

Bei der Zahl 1234

wird die ziffer1 gleich 1,
ziffer1modulo gleich 234,

aber dann kommt für ziffer2-4 eine 0 raus

Hallo

Zum einen sind die Datentypen der Variablen nicht angegeben. Das könnte eine mögliche Fehlerursache sein.
Zum anderen soll es vermutlich nicht

ziffer2modulo=ziffer2&100;

sondern

ziffer2modulo=ziffer2%100;

heissen.

So am Rande: Man beginnt meist mit den Einern:

  zahl = 1234;

  ziffer = zahl % 10; /* Einer */
  zahl /= 10;

  ziffer = zahl % 10; /* Zehner */
  zahl /= 10;

  ziffer = zahl % 10; /* Hunderter */
  zahl /= 10;

  /* ... */

Das hat den Vorteil, dass man weniger Variablen benötigt und der Code sich einfacher fortsetzen oder in einer Schleife umsetzen läßt.

Oliver

Hallo,

hat sich erledigt, da war jemand schneller als ich.

Gruß
Christoph

ziffer2modulo=ziffer2&100;

Bitoperationen werden auf Binärzahlen angewandt nicht auf Dezimalzahlen.

Angenommen Zahl ist die Variable mit der 4-stelligen Zahl und Stellen sind dann die einzelnen Ziffern der verschiedenen Stellen:

for(int i=0; i<4;i++)
{
Stellen[i]=Zahl%10;   
Zahl = Zahl/10;
}

http://arduino.cc/en/Reference/Modulo
Grüße Uwe

??????
Wie kommt das "&" da rein?!

Danke!

komika:
??????
Wie kommt das "&" da rein?!

Danke!

Ich weiß nicht wie es da reinkommt. Du hast es reingeschrieben. :wink: :wink: :wink:

http://arduino.cc/en/Reference/Pointer

Grüße Uwe