![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
' =========================================================================== ' Demoprogramm: Arabische Zahl in römische Zahl umwandeln ' In OCBASIC 1.12a_e1 für Open-Maxi von Dietmar Harlos am 19. Juli 2021 ' =========================================================================== ' Dieses Programm demonstriert unter anderem die Verwendung von Stringarrays ' (Zeichenkettenfeldern) in Tabellen, LOOKTABBYTE und die Schleifen ' WHILE..WEND und REPEAT..UNTIL. ' Die Idee stammt von der Website "http://www.kultmags.com/" aus der ' Computerzeitschrift "Happy Computer 1983-12" ab Seite 117. ' An dieser Stelle möchte ich mich bei Dirk von "das |_ Team" und bei Norbert ' für ihre Unterstützung bedanken. ' --- Definitionen ---------------------------------------------------------- INCLUDE "omax.def" 'Definitionen für die Open-Maxi DIM c BYTE 'temporäre Bytevariable DIM zahl WORD 'die umzuwandelnde Zahl DIM w WORD 'temporäre Wordvariable ' --- Hauptprogramm --------------------------------------------------------- PrintSpc=ON 'SPACE vor einem dezimalen PRINT End2Host=ON 'Bei Programmende gleich in den Host-Modus wechseln WHILE TRUE REPEAT ? ?"Arabische Zahl in römische Zahl umwandeln: ? ?"Bitte Zahl bis 3999 eingeben: "; INPUT zahl IF zahl=0 THEN END 'Wiederhole die Schleife, bis sowohl zahl<4000 und zahl>0 ist UNTIL zahl<4000 AND zahl>0 ?:?"Ergebnis: "; puts zahl/1000+30 'Die arabische Zahl in einzelne Ziffern zerlegen und als zahl=zahl MOD 1000 'römische Zahl auf der Seriellen Schnittstelle ausgeben puts zahl/100+20 zahl=zahl MOD 100 'Die Tausenderstelle beginnt beim 30. Element der Tabelle. puts zahl/10+10 'Die Hunderterstelle beginnt beim 20. Element der Tabelle. zahl=zahl MOD 10 'Die Zehnerstelle beginnt beim 10. Element der Tabelle. puts zahl 'Kleiner Zehn steht am Beginn der Tabelle. ? WEND END 'Zurück in den Hostmodus. Neustart mit RETURN-Taste. ' --- Subroutinen und Funktionen -------------------------------------------- ' PROCEDURE puts(c) ; 0 <= c <= 33 ' ' Diese Subroutine/Prozedur sucht den gewünschten String in der Tabelle ' namens "woerter" und gibt ihn auf der Seriellen Schnittstelle aus. PROCEDURE puts(c) w=0 WHILE c 'String in Tabelle suchen WHILE LOOKTABBYTE(woerter,w) ADD w,1 WEND ADD w,1 SUB c,1 WEND WHILE LOOKTABBYTE(woerter,w) 'String Zeichen für Zeichen ausgeben PUT LOOKTABBYTE(woerter,w) ADD w,1 WEND RETURN END PROCEDURE ' --- Tabellen -------------------------------------------------------------- ' Zweidimensionales Stringarray mit 10 Spalten und 4 Zeilen für die ' Konvertierung von arabischen Zahlen in römische Zahlen. TABLE woerter BYTE "",0,"I",0,"II",0,"III",0,"IV",0,"V",0,"VI",0,"VII",0,"VIII",0,"IX",0 '1..9 "",0,"X",0,"XX",0,"XXX",0,"XL",0,"L",0,"LX",0,"LXX",0,"LXXX",0,"XC",0 '10..90 "",0,"C",0,"CC",0,"CCC",0,"CD",0,"D",0,"DC",0,"DCC",0,"DCCC",0,"CM",0 '100..900 "",0,"M",0,"MM",0,"MMM",0 '1000..3000 0 END TABLE ' --- Programmende --------------------------------------------------------- Passender Link: Bedienungsanleitung zur Open-Macro und Open-Maxi Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |