ページ 11

VCで作った物を~

Posted: 2010年12月23日(木) 18:19
by gjmatpa
『2つの4×4行列を2次元配列に格納し、それらの積を求めるプログラムを作成せよ。 』
という問題をVCで作ったプログラムが↓なのですが、これを私のノートパソコンに入っている
【Study C Version 2.20a for windows 7/Vista/XP 】でも正常に作動するようにするには、
どうすればいいでしょうか?

#include <stdio.h>

void mult_array(int (*a0)[][4], int (*a1)[][4], int (*result)[][4]);

#define N 4
#define COL 128

int main(void)
{
int i;
int a[N][N], b[N][N], c[N][N] = {{0}};
char buf[COL];

/* a[][]の入力 */
for (i = 0; i < N; i++) {
fgets(buf, COL, stdin);
sscanf(buf, "%d %d %d %d", &a[0], &a[1], &a[2], &a[3]);
}
/* b[][]の入力 */
for (i = 0; i < N; i++) {
fgets(buf, COL, stdin);
sscanf(buf, "%d %d %d %d", &b[0], &b[1], &b[2], &b[3]);
}
mult_array(&a, &b, &c);
/* c[][]の出力 */
printf("\n");
for (i = 0; i < N; i++)
printf("%d %d %d %d\n", c[0], c[1], c[i][2], c[i][3]);
return 0;
}


void mult_array(int (*a0)[][4], int (*a1)[][4], int (*result)[][4])
{
int i, j, k, s;

for (i = 0; i < N; i++)
for (j = 0; j < N; j++) {
s = 0;
for (k = 0; k < N; k++)
s += (*a0)[i][k] * (*a1)[k][j];
(*result)[i][j] = s;
}
}



また、もしこのプログラムがおかしい点があればご指摘お願いします

Re: VCで作った物を~

Posted: 2010年12月23日(木) 19:32
by box
ソースコードレベルでの互換性はたぶんあるはずなので、
その、ノートPCに入っているコンパイラーでコンパイルしてみればいいんじゃないでしょうか。

個人的には、
#define
をプロトタイプ宣言の前に持ってきて、
[4]
って書いてあるところを
[N]
ってしたい気分です。

行や列の数が変わったとき、Nを一発直せばたぶんすみますからね。
(追記)
あぁ、データの入出力のところも変えないとダメですね。

Re: VCで作った物を~

Posted: 2010年12月24日(金) 16:15
by gjmatpa
ありがとうございます。 出来ました^^

Re: VCで作った物を~

Posted: 2010年12月24日(金) 16:16
by gjmaetpa
すみません 解決押すの忘れてました;;