回答編集履歴
1
関数を使うコードを追加
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
P[0][7], P[0][6], P[0][5], ... , P[0][0]
|
19
19
|
```
|
20
20
|
|
21
|
-
だから、i = 7, 6,
|
21
|
+
だから、i = 7, 6, ... , 0 で、j = 7, 6, 5, ... , 0
|
22
22
|
|
23
23
|
270度だったら、
|
24
24
|
```text
|
@@ -28,4 +28,56 @@
|
|
28
28
|
P[0][0], P[1][0], P[2][0], ... , P[7][0]
|
29
29
|
```
|
30
30
|
|
31
|
-
だから、j = 7, 6, ... , 0 で、i = 0, 1, 2, ... , 7
|
31
|
+
だから、j = 7, 6, ... , 0 で、i = 0, 1, 2, ... , 7
|
32
|
+
|
33
|
+
**追記**
|
34
|
+
解決済みになりましたね。
|
35
|
+
|
36
|
+
同じようなことを何度も書くのが嫌な場合は、
|
37
|
+
違いだけを引数で切り替える関数にします。
|
38
|
+
```C
|
39
|
+
#include <stdio.h>
|
40
|
+
|
41
|
+
void print(int P[8][8], int v, int d1, int d2, const char *s)
|
42
|
+
{
|
43
|
+
int i, j, *p = &i, *q = &j;
|
44
|
+
int a1 = 0, b1 = 8, c1 = 1, a2 = 0, b2 = 8, c2 = 1;
|
45
|
+
if (v) p = &j, q = &i;
|
46
|
+
if (d1) a1 = 7, b1 = -1, c1 = -1;
|
47
|
+
if (d2) a2 = 7, b2 = -1, c2 = -1;
|
48
|
+
|
49
|
+
printf("\n%s\n", s);
|
50
|
+
for (*p = a1; *p != b1; *p += c1) {
|
51
|
+
for (*q = a2; *q != b2; *q += c2)
|
52
|
+
printf(" %c", ".*"[P[i][j]]);
|
53
|
+
printf("\n");
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
int main(void)
|
58
|
+
{
|
59
|
+
static int P[8][8] = {
|
60
|
+
{ 0, 1, 1, 1, 1, 0, 0, 0 },
|
61
|
+
{ 0, 1, 0, 0, 0, 0, 0, 0 },
|
62
|
+
{ 0, 1, 0, 0, 0, 0, 0, 0 },
|
63
|
+
{ 0, 1, 1, 1, 0, 0, 0, 0 },
|
64
|
+
{ 0, 1, 0, 0, 0, 0, 0, 0 },
|
65
|
+
{ 0, 1, 0, 0, 0, 0, 0, 0 },
|
66
|
+
{ 0, 1, 0, 0, 0, 0, 0, 0 },
|
67
|
+
{ 0, 1, 0, 0, 0, 0, 0, 0 },
|
68
|
+
};
|
69
|
+
print(P, 0, 0, 0, "普通のF");
|
70
|
+
print(P, 1, 0, 1, "180度回転");
|
71
|
+
print(P, 0, 1, 1, "90度回転");
|
72
|
+
print(P, 1, 1, 0, "270度回転");
|
73
|
+
|
74
|
+
print(P, 0, 0, 1, "左右対称");
|
75
|
+
print(P, 0, 1, 0, "上下対称");
|
76
|
+
print(P, 1, 1, 1, "右上がり対角線対称");
|
77
|
+
print(P, 1, 0, 0, "右下がり対角線対称");
|
78
|
+
}
|
79
|
+
```
|
80
|
+
質問は、コードの貼り付けに失敗しています。
|
81
|
+
<code>タグを使って修正してください。
|
82
|
+
|
83
|
+
また、「for分」ではなく、「for文」です。
|