Int Wert bestimmte stelle abfragen

Nikros28

Level-1
Beiträge
28
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich möchte in ST ein bestimmte stelle von Int Wer abfragen.
Das heißt der Int Wert ist 185 und ich möchte jetzt nur wissen welche Zahl die 2 Stelle hat.
Das heißt wenn die Zweite stelle größer als acht ist möchte ich etwas schalten.
Wie kann man das am besten machen?
 
Kannst du das mal näher erklären?
Hi Mike,

zum Thema Dint, Int wenn die Zahl (Nummer) ein Real wäre beispielsweise 185.0

im ersten Zyklus wäre Ziffer =185.0 MOD 10 = 5 --> Soweit OK

zweiten Zyklus dann 18.50 MOD 10 = 8.5 --> entspricht nicht die zweite Ziffern 8

dritten Zyklus 1.85 MOD 10 = 1.85 --> entspricht nicht die dritte Ziffern 1

meintest du das? 🙈
 
Ja, da hast du recht! Wenn er nur die Zehnerstelle vergleichen möchte ist so. Was ich geschrieben habe ist dann nur nötig wenn man alle Ziffern haben möchte.

ich habe das so allgemein geschrieben und nicht nur auf die Zehnerstelle bezogen
 
Was ich geschrieben habe ist dann nur nötig wenn man alle Ziffern haben möchte.
Nö, ist es nicht. Dann macht man es halt so:
Code:
iEiner     := MyDINT MOD 10;         // 1234 liefert --> 4
iZehner    := (MyDINT / 10) MOD 10;  // 1234 liefert --> 3
iHunderter := (MyDINT / 100) MOD 10; // 1234 liefert --> 2

Dein Code:
while (Nummer > 0)
Ziffer := Nummer MOD 10;
Nummer := Nummer/10;
Was passiert da z.B. bei dem Wert 100? ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte in ST ein bestimmte stelle von Int Wer abfragen.
Das heißt der Int Wert ist 185 und ich möchte jetzt nur wissen welche Zahl die 2 Stelle hat.
Meinst Du die zweite Stelle von vorn oder von hinten? Wenn der Wert 1234 ist, was soll da rauskommen?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was passiert da z.B. bei dem Wert 100?
Nummer = 100
1. Zyklus:
100 Mod 10 = 0 --> erste Ziffer
Nummer=Nummer/10 = 10

2. Zyklus:

10 Mod 10 = 0 --> zweite Ziffer
Nummer = Nummer/10=1

3. Zyklus:
1 Mod 10 = 1 --> dritte Ziffer
Nummer=Nummer/10 = 0.1 --> 0 wenn Int oder Dint --> Ende der Schleife
 
Eine While-Schleife rast in einem Zyklus durch. Da nennt man das Durchläufe und nicht Zyklus.
Wenn man die Einer- oder Zehner-Stelle braucht, wo findet man die nach Deiner While-Schleife?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

da fehlt ein Array wo man die Ziffern speichern kann.

Code:
i=0
While (Nummer>0)
    Ziffer:= Nummer MOD 10;
    arrZiffer[i]:=Ziffer;
    Nummer:= Nummer/10;
    i:=i+1
end While

natürlich geht auch ohne Schleifen wie Mike es vorgeschlagen hat. Ich wollte eine Alternativ zeigen.

Grüße
E
 
Zurück
Oben