回答編集履歴

1

関数を使うコードを追加

2021/06/12 07:29

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- だから、i = 7, 6, 5, ... , 0 で、j = 7, 6, ... , 0
41
+ だから、i = 7, 6, ... , 0 で、j = 7, 6, 5, ... , 0
42
42
 
43
43
 
44
44
 
@@ -59,3 +59,107 @@
59
59
 
60
60
 
61
61
  だから、j = 7, 6, ... , 0 で、i = 0, 1, 2, ... , 7
62
+
63
+
64
+
65
+ **追記**
66
+
67
+ 解決済みになりましたね。
68
+
69
+
70
+
71
+ 同じようなことを何度も書くのが嫌な場合は、
72
+
73
+ 違いだけを引数で切り替える関数にします。
74
+
75
+ ```C
76
+
77
+ #include <stdio.h>
78
+
79
+
80
+
81
+ void print(int P[8][8], int v, int d1, int d2, const char *s)
82
+
83
+ {
84
+
85
+ int i, j, *p = &i, *q = &j;
86
+
87
+ int a1 = 0, b1 = 8, c1 = 1, a2 = 0, b2 = 8, c2 = 1;
88
+
89
+ if (v) p = &j, q = &i;
90
+
91
+ if (d1) a1 = 7, b1 = -1, c1 = -1;
92
+
93
+ if (d2) a2 = 7, b2 = -1, c2 = -1;
94
+
95
+
96
+
97
+ printf("\n%s\n", s);
98
+
99
+ for (*p = a1; *p != b1; *p += c1) {
100
+
101
+ for (*q = a2; *q != b2; *q += c2)
102
+
103
+ printf(" %c", ".*"[P[i][j]]);
104
+
105
+ printf("\n");
106
+
107
+ }
108
+
109
+ }
110
+
111
+
112
+
113
+ int main(void)
114
+
115
+ {
116
+
117
+ static int P[8][8] = {
118
+
119
+ { 0, 1, 1, 1, 1, 0, 0, 0 },
120
+
121
+ { 0, 1, 0, 0, 0, 0, 0, 0 },
122
+
123
+ { 0, 1, 0, 0, 0, 0, 0, 0 },
124
+
125
+ { 0, 1, 1, 1, 0, 0, 0, 0 },
126
+
127
+ { 0, 1, 0, 0, 0, 0, 0, 0 },
128
+
129
+ { 0, 1, 0, 0, 0, 0, 0, 0 },
130
+
131
+ { 0, 1, 0, 0, 0, 0, 0, 0 },
132
+
133
+ { 0, 1, 0, 0, 0, 0, 0, 0 },
134
+
135
+ };
136
+
137
+ print(P, 0, 0, 0, "普通のF");
138
+
139
+ print(P, 1, 0, 1, "180度回転");
140
+
141
+ print(P, 0, 1, 1, "90度回転");
142
+
143
+ print(P, 1, 1, 0, "270度回転");
144
+
145
+
146
+
147
+ print(P, 0, 0, 1, "左右対称");
148
+
149
+ print(P, 0, 1, 0, "上下対称");
150
+
151
+ print(P, 1, 1, 1, "右上がり対角線対称");
152
+
153
+ print(P, 1, 0, 0, "右下がり対角線対称");
154
+
155
+ }
156
+
157
+ ```
158
+
159
+ 質問は、コードの貼り付けに失敗しています。
160
+
161
+ <code>タグを使って修正してください。
162
+
163
+
164
+
165
+ また、「for分」ではなく、「for文」です。