Forum: Mikrocontroller und Digitale Elektronik Bascom: von Variable die letzten 2 Stellen auswerten


von McMurkser (Gast)


Lesenswert?

Hi!

Wie kann ich von einer Variable (Integer) die letzten beiden Stellen
auswerten? z.B.:

If Weg = 1 Then Print "q"
If Weg = 2 Then Print "w"
If Weg = 3 Then Print "e"
If Weg = 4 Then Print "r"
If Weg = 5 Then Print "t"
If Weg = 6 Then Print "z"
If Weg = 7 Then Print "u"
If Weg = 8 Then Print "i"
If Weg = 9 Then Print "o"
If Weg = 10 Then Print "p"  <--- auch wenn Weg in Wirklichkeit 210
ist, soll er, wenn hinten "10" ist, ein "p" printen.


Vielen Dank

McMurkser

von LinkinPark (Gast)


Lesenswert?

Hi

Dafür gibt es den Right Befehl:
var = RIGHT(var1 ,n )

Auf deinen Fall angewendet:
IrgendeineVariable = Right(Weg, 2)

In der Variable stehen dann nur die letzten beiden Stellen der Variable
Web. Allerdings funktioniert das nur mit einem String so weit ich weis.
Also musst du den Integer erst mit dem Str Befehl in einen String
umwandeln.

von andré (Gast)


Lesenswert?

Und bevor du wieder nach Vereinfachungen fragst:

"
If Weg = 1 Then Print "q"
If Weg = 2 Then Print "w"
If Weg = 3 Then Print "e"
If Weg = 4 Then Print "r"
If Weg = 5 Then Print "t"
If Weg = 6 Then Print "z"
If Weg = 7 Then Print "u"
If Weg = 8 Then Print "i"
If Weg = 9 Then Print "o"
"

Sieh dir mal "Data" und "lookupstr" an, die if Anweisungen
verbraten Flash ohne Ende.

mfg

von Peter D. (peda)


Lesenswert?

Unter C gibt es eine Division mit Rest (%), damit kann man dann
höherwertige Digits abtrennen.

Um also bei 10, 110, 210 usw. den Vergleich zu machen schreibt man:

if( (Weg % 100) == 10 )


Peter

von andré (Gast)


Lesenswert?

Falls du trotzdem Bascom benutzen willst:
Die Division mit Rest gibts da auch

ret = var1 MOD var2

Remarks

Ret  The variable that receives the remainder.
var1  The variable to divide.
var2  The divisor.

mfg

von Peter D. (peda)


Lesenswert?

Ich kann kein Bascom, aber unter C würde man solche wiederholten
Auswahlen über Zeiger machen.
D.h. man nimmt den Wert als Index, der auf ein bestimmtes Zeichen
innerhalb eines Textfeldes zeigt.
Und dieses Zeichen wird nur mit einer einzigen Anweisung ausgegeben.

Unter C würde das ganze optimiert so aussehen:

char zeichen[] = "qwertzuiop" ;
printf( "%c", zeichen[(Weg % 100)-1] );


Peter

von McMurkser (Gast)


Lesenswert?

Moin.

Vielen herzlichen Dank für eure kompententen Antworten! :)
Wirklich sehr hilfreich, dieses Forum!

@Peter:
Programmierst du in C mit WinAVR? Ich möchte auch mal C ausprobieren.
Hab auch schon in Assembler gecodet aber Bascom geht halt einfach
sauschnell. Dafür braucht es aber viel Flash :(.

cya

McMurkser

von Peter D. (peda)


Lesenswert?

Ja, ich benutze den WINAVR.

Allerdings bevorzuge ich die Kommandozeile.
Ich habe immer noch den guten alten Norton-Commander in der DOS-Box
laufen und compiliere über meine Batch-Datei.

Zum Programmieren benutze ich den ISP-Port des STK500, bzw. ab Mega8
meinen Bootloader.


Peter

von McMurkser (Gast)


Lesenswert?

Okay

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.