変形Fizz-Buzz問題
Posted feedbacks - COBOL
勉強を兼ねてCOBOLで書いてみました。 ループのスキップ方法が分からなくてIF-ELSEネストになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | IDENTIFICATION DIVISION.
PROGRAM-ID. FIZZ-BUZZ.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 I PIC 9(2) VALUE 0.
01 DIV PIC 9(2) VALUE 0.
01 REM PIC 9(2) VALUE 0.
01 EDIT PIC Z9.
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 20
DIVIDE I BY 15 GIVING DIV REMAINDER REM
IF REM = 0 THEN
MOVE I TO EDIT
DISPLAY EDIT ":FizzBuzz"
ELSE
DIVIDE I BY 3 GIVING DIV REMAINDER REM
IF REM = 0 THEN
MOVE I TO EDIT
DISPLAY EDIT ":Fizz"
ELSE
DIVIDE I BY 5 GIVING DIV REMAINDER REM
IF REM = 0 THEN
MOVE I TO EDIT
DISPLAY EDIT ":Buzz"
ELSE
MOVE I TO EDIT
DISPLAY EDIT ":hoge"
END-IF
END-IF
END-IF
END-PERFORM
STOP RUN.
|
お題の一部が飛んでしまっていました。すみません。書き直してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | IDENTIFICATION DIVISION.
PROGRAM-ID. FIZZ-BUZZ.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 I PIC 9(2) VALUE 0.
01 DIV PIC 9(2) VALUE 0.
01 REM PIC 9(2) VALUE 0.
01 EDIT PIC Z9.
01 SKIP PIC 9 VALUE 0.
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 20
DIVIDE I BY 15 GIVING DIV REMAINDER REM
IF REM = 0 THEN
MOVE I TO EDIT
DISPLAY EDIT ":FizzBuzz"
MOVE 1 TO SKIP
END-IF
DIVIDE I BY 3 GIVING DIV REMAINDER REM
IF REM = 0 AND SKIP = 0 THEN
MOVE I TO EDIT
DISPLAY EDIT ":Fizz"
MOVE 1 TO SKIP
END-IF
DIVIDE I BY 5 GIVING DIV REMAINDER REM
IF REM = 0 AND SKIP = 0 THEN
MOVE I TO EDIT
DISPLAY EDIT ":Buzz"
MOVE 1 TO SKIP
END-IF
IF SKIP = 0 THEN
MOVE I TO EDIT
DISPLAY EDIT ":hoge"
END-IF
MOVE 0 TO SKIP
END-PERFORM
STOP RUN.
|



raynstard
#3758()
Rating0/2=0.00
[ reply ]