VCで作った物を~

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
gjmatpa

VCで作った物を~

#1

投稿記事 by gjmatpa » 13年前

『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;
}
}



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

box
記事: 2002
登録日時: 13年前

Re: VCで作った物を~

#2

投稿記事 by box » 13年前

ソースコードレベルでの互換性はたぶんあるはずなので、
その、ノートPCに入っているコンパイラーでコンパイルしてみればいいんじゃないでしょうか。

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

行や列の数が変わったとき、Nを一発直せばたぶんすみますからね。
(追記)
あぁ、データの入出力のところも変えないとダメですね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

gjmatpa

Re: VCで作った物を~

#3

投稿記事 by gjmatpa » 13年前

ありがとうございます。 出来ました^^

gjmaetpa

Re: VCで作った物を~

#4

投稿記事 by gjmaetpa » 13年前

すみません 解決押すの忘れてました;;

閉鎖

“C言語何でも質問掲示板” へ戻る