【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19423

「無効な間接参照」というエラーについて質問です。
投稿者---n研(2005/01/24 00:09:57)


配列もポインタもほとんどわかってない状態なのですが、、
よろしくお願いします。
↓は関数の抜粋なんですが、
B、C、Dのような計算をしようとすると
「C=・・・」の計算のところで無効な間接参照というエラーが出てしまいます。
ポインタは使っていないんですが。。

float kouten()    
{
    float   B,C,D;
        B=L[i][0]*(siten[i][0]-O[0])
          +L[i][1]*(siten[i][1]-O[1])
          +L[i][2]*(siten[i][2]-O[2]);
        C=(siten[i][0]-O[i][0])*(siten[i][0]-O[i][0])
          +(siten[i][1]-O[i][1])*(siten[i][1]-O[i][1])
          +(siten[i][2]-O[i][2])*(siten[i][2]-O[i][2]);
        D=B*B-C;
        printf("B=%f,C=%f,D=%f\n",B,C,D);
    if (D > 0) {return (-B-sqrt(D));}   /*交点あり*/
    else{      return (INFINITY);  /*交点なし、無限遠*/}
}


ええと、配列は↓のように定義してるつもりです。

#define n   10  
#define m   3  

float   siten[n][m];
float   O[m];
float   L[n][m];

void SetObj(void)   
{
    r=100; 
        L[0][0]=0; L[0][1]=0; L[0][2]=1; 
    O[0]=0; O[1]=0; O[2]=100;   
}


配列の定義の仕方がいけないんでしょうか、、
B、C、Dの計算をさせる時の配列の使い方がいけないでしょうか。
なにかアドバイスをお願いします。




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:「無効な間接参照」というエラーについて質問です。 19425 nop 2005/01/24 00:14:48


No.19425

Re:「無効な間接参照」というエラーについて質問です。
投稿者---nop(2005/01/24 00:14:48)


> float O[m];
> C=(siten[i][0]-O[i][0])*(siten[i][0]-O[i][0])
> +(siten[i][1]-O[i][1])*(siten[i][1]-O[i][1])
> +(siten[i][2]-O[i][2])*(siten[i][2]-O[i][2]);

一次元配列「O」を二次元配列としているのはおかしいでしょう。


この投稿にコメントする

削除パスワード

No.19426

ありがとうございました。
投稿者---n研(2005/01/24 00:27:39)


>一次元配列「O」を二次元配列としているのはおかしいでしょう。

その通りですね^^;
見落としていました。。
もっと細かいところに注意を払うように心掛けます。
さっきのエラーが消えたのでまた頑張りますっ
ありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧