Pages: [1]   Go Down
Author Topic: Modulo  (Read 363 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 140
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich möchte eine 4-stellige Zahl in die einzelnen Ziffern umwandeln.
Mein Code:
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
Logged

Germany
Offline Offline
Edison Member
*
Karma: 136
Posts: 1491
If you believe something is right, you won't see what's wrong (David Straker).
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo

Zum einen sind die Datentypen der Variablen nicht angegeben. Das könnte eine mögliche Fehlerursache sein.
Zum anderen soll es vermutlich nicht
Code:
ziffer2modulo=ziffer2&100;
sondern
Code:
ziffer2modulo=ziffer2%100;
heissen.

So am Rande: Man beginnt meist mit den Einern:
Code:
  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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

hat sich erledigt, da war jemand schneller als ich.

Gruß
Christoph
« Last Edit: November 10, 2012, 04:55:30 am by mx55 » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 263
Posts: 21610
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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:

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

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

Offline Offline
Full Member
***
Karma: 0
Posts: 140
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Danke!
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 263
Posts: 21610
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Danke!
Ich weiß nicht wie es da reinkommt. Du hast es reingeschrieben.  smiley-wink smiley-wink smiley-wink

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

Grüße Uwe
Logged

Pages: [1]   Go Up
Jump to: