teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

ポインタを使わないといけない旨を書いていましたが、全然ポインタや構造体などを使わなくてもいけました。

2021/05/18 05:33

投稿

suugaku_nyumon
suugaku_nyumon

スコア37

answer CHANGED
@@ -206,4 +206,105 @@
206
206
  printf(" |\n");
207
207
  }
208
208
  }
209
+ ```
210
+ ### 説明(5月18日14時30分追記)
211
+
212
+ ポインタを使わないといけないと書きましたが、そんなことありませんでした。
213
+ 1要素ずつ計算する関数を作れば良いだけでした。
214
+
215
+ ### 参考(追記についてのコード)
216
+ ```C
217
+ #include<stdio.h>
218
+
219
+ int jisu;
220
+
221
+ int multij(int fir[][jisu],int sec[][jisu],int i,int j);
222
+ void disp(int a[][jisu],int b[][jisu],int c[][jisu]);
223
+
224
+ int main(void)
225
+ {
226
+ do
227
+ {
228
+ printf("Enter the dimension.\n");
229
+ scanf("%d",&jisu);
230
+ } while(jisu < 2 || jisu > 6);
231
+
232
+ int a[jisu][jisu];
233
+ int b[jisu][jisu];
234
+ int c[jisu][jisu];
235
+ printf("\ndefine matrix A.");
236
+ for(int m=0;m<jisu;m++)
237
+ {
238
+ for(int n=0;n<jisu;n++)
239
+ {
240
+ printf("\nEnter a[%d][%d]\n",m,n);
241
+ scanf("%d", &a[m][n]);
242
+ }
243
+ }
244
+
245
+ printf("\ndefine matrix B.");
246
+ for(int m=0;m<jisu;m++)
247
+ {
248
+ for(int n=0;n<jisu;n++)
249
+ {
250
+ printf("\nEnter b[%d][%d]\n",m,n);
251
+ scanf("%d", &b[m][n]);
252
+ }
253
+ }
254
+
255
+ for(int m=0;m<jisu;m++)
256
+ {
257
+ for(int n=0;n<jisu;n++)
258
+ {
259
+ c[m][n] = multij(a,b,m,n);
260
+ }
261
+ }
262
+ disp(a,b,c);
263
+ }
264
+
265
+ int multij(int fir[][jisu],int sec[][jisu],int i,int j)
266
+ {
267
+ int valueij = 0;
268
+ for(int n=0;n<jisu;n++)
269
+ {
270
+ valueij += fir[i][n] * sec[n][j];
271
+ }
272
+
273
+ return valueij;
274
+ }
275
+
276
+ void disp(int a[][jisu],int b[][jisu],int c[][jisu])
277
+ {
278
+ printf("matrix A\n");
279
+ for(int i=0;i<jisu;i++)
280
+ {
281
+ printf("|");
282
+ for(int j=0;j<jisu;j++)
283
+ {
284
+ printf("%6d",a[i][j]);
285
+ }
286
+ printf(" |\n");
287
+ }
288
+
289
+ printf("matrix B\n");
290
+ for(int i=0;i<jisu;i++)
291
+ {
292
+ printf("|");
293
+ for(int j=0;j<jisu;j++)
294
+ {
295
+ printf("%6d",b[i][j]);
296
+ }
297
+ printf(" |\n");
298
+ }
299
+ printf("multiply A by B\n");
300
+ for(int i=0;i<jisu;i++)
301
+ {
302
+ printf("|");
303
+ for(int j=0;j<jisu;j++)
304
+ {
305
+ printf("%6d",c[i][j]);
306
+ }
307
+ printf(" |\n");
308
+ }
309
+ }
209
310
  ```