こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語について質問です

C言語について質問です

#include <stdio.h>

int main(){
int i,j;
double a[8][8],p[8][8],x[8];
for(i=0;i<8;i++){
for(j=0;j<8;j++){
a[i][j]=0.0;
}
}
x[8]={0.182289,0.063801,0.125440,0.097210,0.128485,0.080488,0.189581,0.132706};
p[8][8]={{0,25,24,14,19,5,25,10},
{24,0,50,52,15,40,20,11},
{59,18,0,35,37,24,45,12},
{34,3,28,0,22,51,43,3},
{29,31,21,33,0,22,30,15},
{37,7,75,24,38,0,28,31},
{40,8,32,15,16,21,0,21},
{26,28,28,25,24,18,36,0}};

for(i=0;i<8;i++){
for(j=0;j<8;j++){
a[i][j]=1-(x[i]/(x[i]+x[j]))/(p[i][j]/(p[i][j]+p[j][i]));
printf("%f\n",a[i][j]);
}
}

}

がコンパイル出来ません。コンパイラはvisual stadio2008です。
ご指摘お願いします。

投稿日時 - 2010-06-11 13:05:55

QNo.5960699

すぐに回答ほしいです

質問者が選んだベストアンサー

配列の初期化は「宣言と同時」にしか行えません。

double a[8][8],p[8][8],x[8];



double a[8][8];
double x[8]={0.182289,0.063801,0.125440,0.097210,0.128485,0.080488,0.189581,0.132706};
double p[8][8]={{0,25,24,14,19,5,25,10},
{24,0,50,52,15,40,20,11},
{59,18,0,35,37,24,45,12},
{34,3,28,0,22,51,43,3},
{29,31,21,33,0,22,30,15},
{37,7,75,24,38,0,28,31},
{40,8,32,15,16,21,0,21},
{26,28,28,25,24,18,36,0}};

に書き換え、元々あった

x[8]={0.182289,0.063801,0.125440,0.097210,0.128485,0.080488,0.189581,0.132706};
p[8][8]={{0,25,24,14,19,5,25,10},
{24,0,50,52,15,40,20,11},
{59,18,0,35,37,24,45,12},
{34,3,28,0,22,51,43,3},
{29,31,21,33,0,22,30,15},
{37,7,75,24,38,0,28,31},
{40,8,32,15,16,21,0,21},
{26,28,28,25,24,18,36,0}};

を削除しましょう。

投稿日時 - 2010-06-11 14:00:30

お礼

ありがとうございます。解決しました。
今後一層勉強に励みたいと思います。

投稿日時 - 2010-06-11 14:53:38

このQ&Aは役に立ちましたか?

12人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

> x[8]={0.182289,0.063801,0.125440,0.097210,0.128485,0.080488,0.189581,0.132706};
> p[8][8]={{0,25,24,14,19,5,25,10},
(以下略)

このような書式による初期化は配列の宣言時にしか行えません。
また、aもpも[0][0]から[7][7]までで、[8]の分の要素はありません。

投稿日時 - 2010-06-11 13:32:27