PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stellen (Einer, Zehner, ...) einer Zahl seperat speichern



HF SHOOTER
05.11.2007, 22:44
Hallo

Wieder mal ein verzwicktes Problem. Und zwar ich bastel ja gerade dieses Drehzahlmesser und im Moment bin ich schon soweit das die Ansteuerung der 5x 7-Segmentanzeigen flimmerfrei läuft. (Sogar mit dem 1MHz internen Takt, hätte ich ned gedacht!)

Jetzt möchte ich eine merhstellige Zahl, z.B. 12345 auf den einzelnen Anzeigen darstellen. Problem ist nur das ich auf Anzeige 1 die Ziffer 1 haben möchte und auf Anzeige 5 nur die Ziffer 5, usw.

In Visual Basic würd ich das ganze so lösen (erst in Zeichenkette speichern, dann einzelln auslesen:

Dim Zahl As String
Dim Ziffer(1 To 5) As Byte
Dim Pos As Byte

Zahl = 12345

For Pos = 1 To 5
Ziffer(Pos) = Mid(Zahl, Pos, 1)
Next

Dann habe ich in dem Array Ziffer die einzelnen Stellen,
Ziffer 1 hat die 10000er
Ziffer 2 hat die 1000er
Ziffer 3 hat die 100er
Ziffer 4 hat die 10er
Ziffer 5 hat die 1er

Wie mach ich sowas in C?
Danke im Voraus!

mfg
Benny

uwegw
05.11.2007, 23:43
Mit / und % die Zahl schrittweise zerlegen:

Beispiel: Zahl ist 12345
Die Zahl durch 10 teilen---> 1234, Rest 5<<letze Stelle.
Nun die 1234 wieder durch 10 teilen---> 123, Rest 4<<vorletze Stelle.
Das so lange wiederholen, bis die Zahl einstellig (kleiner als 10) geworden ist.
Also
123 durch 10 teilen---> 12, Rest 3
12 durch 10 teilen---> 1, Rest 2
Somit sind aller Stellen berechnet worden.

HF SHOOTER
06.11.2007, 02:04
Danke nun funktionierts!

mfg
Benny