update
This commit is contained in:
parent
1f1ad49427
commit
6f050a029e
2496 changed files with 37609 additions and 3031 deletions
53
Task/Roman-numerals-Encode/COBOL/roman-numerals-encode.cobol
Normal file
53
Task/Roman-numerals-Encode/COBOL/roman-numerals-encode.cobol
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. TOROMAN.
|
||||
DATA DIVISION.
|
||||
working-storage section.
|
||||
01 ws-number pic 9(4) value 0.
|
||||
01 ws-save-number pic 9(4).
|
||||
01 ws-tbl-def.
|
||||
03 filler pic x(7) value '1000M '.
|
||||
03 filler pic x(7) value '0900CM '.
|
||||
03 filler pic x(7) value '0500D '.
|
||||
03 filler pic x(7) value '0400CD '.
|
||||
03 filler pic x(7) value '0100C '.
|
||||
03 filler pic x(7) value '0090XC '.
|
||||
03 filler pic x(7) value '0050L '.
|
||||
03 filler pic x(7) value '0040XL '.
|
||||
03 filler pic x(7) value '0010X '.
|
||||
03 filler pic x(7) value '0009IX '.
|
||||
03 filler pic x(7) value '0005V '.
|
||||
03 filler pic x(7) value '0004IV '.
|
||||
03 filler pic x(7) value '0001I '.
|
||||
01 filler redefines ws-tbl-def.
|
||||
03 filler occurs 13 times indexed by rx.
|
||||
05 ws-tbl-divisor pic 9(4).
|
||||
05 ws-tbl-roman-ch pic x(1) occurs 3 times indexed by cx.
|
||||
01 ocx pic 99.
|
||||
01 ws-roman.
|
||||
03 ws-roman-ch pic x(1) occurs 16 times.
|
||||
PROCEDURE DIVISION.
|
||||
accept ws-number
|
||||
perform
|
||||
until ws-number = 0
|
||||
move ws-number to ws-save-number
|
||||
if ws-number > 0 and ws-number < 4000
|
||||
initialize ws-roman
|
||||
move 0 to ocx
|
||||
perform varying rx from 1 by +1
|
||||
until ws-number = 0
|
||||
perform until ws-number < ws-tbl-divisor (rx)
|
||||
perform varying cx from 1 by +1
|
||||
until ws-tbl-roman-ch (rx, cx) = spaces
|
||||
compute ocx = ocx + 1
|
||||
move ws-tbl-roman-ch (rx, cx) to ws-roman-ch (ocx)
|
||||
end-perform
|
||||
compute ws-number = ws-number - ws-tbl-divisor (rx)
|
||||
end-perform
|
||||
end-perform
|
||||
display 'inp=' ws-save-number ' roman=' ws-roman
|
||||
else
|
||||
display 'inp=' ws-save-number ' invalid'
|
||||
end-if
|
||||
accept ws-number
|
||||
end-perform
|
||||
.
|
||||
15
Task/Roman-numerals-Encode/Racket/roman-numerals-encode.rkt
Normal file
15
Task/Roman-numerals-Encode/Racket/roman-numerals-encode.rkt
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#lang racket
|
||||
(define (encode/roman number)
|
||||
(cond ((>= number 1000) (string-append "M" (encode/roman (- number 1000))))
|
||||
((>= number 900) (string-append "CM" (encode/roman (- number 900))))
|
||||
((>= number 500) (string-append "D" (encode/roman (- number 500))))
|
||||
((>= number 400) (string-append "CD" (encode/roman (- number 400))))
|
||||
((>= number 100) (string-append "C" (encode/roman (- number 100))))
|
||||
((>= number 90) (string-append "XC" (encode/roman (- number 90))))
|
||||
((>= number 50) (string-append "L" (encode/roman (- number 50))))
|
||||
((>= number 40) (string-append "XL" (encode/roman (- number 40))))
|
||||
((>= number 10) (string-append "X" (encode/roman (- number 10))))
|
||||
((>= number 5) (string-append "V" (encode/roman (- number 5))))
|
||||
((>= number 4) (string-append "IV" (encode/roman (- number 4))))
|
||||
((>= number 1) (string-append "I" (encode/roman (- number 1))))
|
||||
(else "")))
|
||||
Loading…
Add table
Add a link
Reference in a new issue