C言語でのプログラム
全対最短経路(フロイドのアルゴリズム)のプログラムを作成したんですが、以下のようなメッセージが出てしまい、どこが悪いのかさっぱりわかりません。どなたかご教授願えないでしょうか?
<プログラム>
#include<stdio.h>
#define NC 999 /* It should be large enough. */
#define N 5
void floyd(int, int [][], int [][], int [][]);
int W[N][N] = {
{ 0, 1, NC, 1, 5 },
{ 9, 0, 3, 2, NC },
{ NC, NC, 0, 4, NC },
{ NC, NC, 2, 0, 3 },
{ 3, NC, NC, NC, 0 },
};
int P[N][N];
int D[N][N];
main()
{
floyd(N, W, D, P);
}
void floyd(int n, int W[][], int D[][], int P[][])
{
int i, j, k;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
P[i][j] = 0;
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
D[i][j] = W[i][j];
}
}
for(k=0;k<n;k++){
for(i=0;i<n;j++){
for(j=0;j<n;j++){
if(D[i][k]+D[k][j]<D[i][j]){
P[i][j] = k;
D[i][j] = D[i][k] + D[k][j];
}
}
}
}
printf("?nall pairs of the shortest pathes:?n");
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%3d ", D[i][j]);
}
printf("?n");
}
printf("?n");
}
<エラーメッセージ>
In function `floyd':
:30: error: invalid use of array with unspecified bounds
:36: error: invalid use of array with unspecified bounds
:43: error: invalid use of array with unspecified bounds
:44: error: invalid use of array with unspecified bounds
:45: error: invalid use of array with unspecified bounds
:54: error: invalid use of array with unspecified bounds
お礼
>ソースコード以前の問題でしょう。 そのとおりでした!出力先の設定をしていなかっただけのようでした。 初歩的なミスで大変失礼いたしました。 ご回答、ありがとうございました。 また、よろしくお願いいたします。