challenge 九九の表示

掛け算の九九を下のように表示してください。

1 * 1 =  1
1 * 2 =  2
1 * 3 =  3
(略)
7 * 8 = 56
7 * 9 = 63
8 * 1 =  8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
(略)
9 * 8 = 72
9 * 9 = 81

なお、この問題は掛け算をどうやるかではなく、 どうやって右端がそろうようにレイアウトするかに重点を置いているので、 下のようなへこんだ出力は禁止です。

7 * 9 = 63
8 * 1 = 8
8 * 2 = 16
動的にサイズを変えられるようにしてみました。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
        static void Main(string[] args)
        {
            kuku(9);
            kuku(99);
            kuku(999);
        }

        static void kuku(int n)
        {
            int len = n.ToString().Length;
            int xLen = (n * n).ToString().Length;
            string    format = "{0, " + len + "} * {1, " + len + "} = {2, " + xLen + "}";

            for (int i = 1; i <= n ; ++i)
                for (int j = 1; j <= n ; ++j)
                    Console.WriteLine(format, i, j, i * j);
        }
面白くない答えですが・・・

sayは、printlnだと思ってください。
t_ishida
1
for(var i=1;i<10;i++) for(var j = 1;j<10;j++) say([i,'*',j,'=',''].join(' ') + (i * j > 9 ? '' : ' ') + i * j);

Posted feedbacks - COBOL

特に工夫はありません。COBOL向きのお題かもしれませんね。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
* 九九の表示 - YCobol 0.19にて動作確認
IDENTIFICATION DIVISION.
PROGRAM-ID. DOUKAKU-62.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 I PIC 9 VALUE 0.
01 J PIC 9.
01 K PIC Z9.
*
PROCEDURE DIVISION.
MAIN.
    PERFORM UNTIL I >= 9
        MOVE 0 TO J
        ADD 1 TO I
        PERFORM UNTIL J >= 9
            ADD 1 TO J
            COMPUTE K = I * J
            DISPLAY I " * " J " = " K
        END-PERFORM
    END-PERFORM
    STOP RUN.

http://ja.doukaku.org/comment/6132/は一般のCOBOLではなくYCobol独自の書式だったので、より一般的な書式のものに書き換えました。 OpenCOBOLでのコンパイルに成功、動作確認済み。

 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
       IDENTIFICATION DIVISION.
       PROGRAM-ID. DOUKAKU-62.
      *
       ENVIRONMENT DIVISION.
      *
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  WK-KUKU.
           03 L      PIC 9.
           03 FILLER PIC X(3) VALUE " * ".
           03 R      PIC 9.
           03 FILLER PIC X(3) VALUE " = ".
           03 RESULT PIC Z9.
      *
       PROCEDURE DIVISION.
           MOVE ZERO TO L.
           PERFORM UNTIL L = 9
               ADD 1 TO L
               MOVE ZERO TO R
               PERFORM UNTIL R = 9
                   ADD 1 TO R
                   MULTIPLY L BY R GIVING RESULT
                   DISPLAY WK-KUKU
               END-PERFORM
           END-PERFORM.
           STOP RUN.

Index

Feed

Other

Link

Pathtraq

loading...