九九の表示
動的にサイズを変えられるようにしてみました。
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 - BASIC
どうやって右端を揃うようにレイアウトするか、という重要な要件をあえてユーザーの反射神経に委ねてみました。 左右に移動しながら表示されるので、適当なところでキーを押すと止まります。 N88-BASICで昔のゲーム風に。 (補足) 195 E=0 を加えると、ユーザー入力無しでレイアウトされます。
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 | 100 DEFINT A-Z
110 FOR I = 1 TO 9
120 FOR J = 1 TO 9
130 S$ = RIGHT$(" "+STR$(I*J),2)+" "+CHR$(13)
140 X=7:VX=-1:E=1
150 WHILE E
160 PRINT STR$(I)+" *"+STR$(J)+" ="+SPACE$(X/3)+S$;
170 X=X+VX
180 IF X<4 OR X>10 THEN VX=-VX
190 IF INKEY$<>"" THEN E=0
200 WEND
210 PRINT
220 NEXT J
230 NEXT I
--- 筆者実行例
run
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
^C
Break in 170
Ok
|






にしお
#3418()
Rating0/2=0.00
なお、この問題は掛け算をどうやるかではなく、 どうやって右端がそろうようにレイアウトするかに重点を置いているので、 下のようなへこんだ出力は禁止です。
2 replies [ reply ]