2×2行列の掛け算をするプログラム
タイトルのプログラムなんですが、授業で例題としてソース渡されたんですが、学校のUNIXのやつだと動くんですけど、自分の使ってるVC++だと動かないんですよ。
その理由と、VC++で動くようにするにはどうしたらいいかおしえてください。
ソースは、
#include<stdio.h>
void get_data();
void write_data();
void product();
main()
{
double a[2][2],b[2][2],c[2][2];
get_data(a);
get_data(b);
write_data(a);
write_data(b);
product(a,b,c);
write_data(c);
}
void get_data(double p[][2])
{
int i,j;
printf("Input elements\n");
for(i=0;i<2;i++)
for(j=0;j<2;j++){
printf("(%d,%d)-th element=",i,j);
scanf("%lf",&p[i][j]);
}
}
void write_data(double p[][2])
{
int i,j;
printf("\n");
for(i=0;i<2;i++){
for(j=0;j<2;j++)
printf("(%d,%d)-th element=%lf\t",i,j,p[i][j]);
printf("\n");
}
printf("\n");
}
void product(double u[][2],double v[][2],double w[][2])
{
int i,j,k;
for(i=0;i<2;i++)
for(j=0;j<2;j++){
w[i][j]=0.0;
for(k=0;k<2;k++)
w[i][j]+=u[i][k]*v[k][j];
}
}
です。
よろしくおねがいします。
回答(1件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.1ベストアンサー20pt
最初のほうのプロトタイプ宣言と実際の関数の定義が異なっているために VC++ でコンパイルエラーになるのだと思います。
void get_data();
void write_data();
void product();
この 3行を
void get_data(double p[][2]);
void write_data(double p[][2]);
void product(double u[][2],double v[][2],double w[][2]);
のように修正すればコンパイルができるようになると思います。
この回答へのお礼
かいとうありがとうございます。
コンパイルできました。ほんとうっかりしてたって感じでした。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











