ページ 11

構造体の使い方

Posted: 2005年6月17日(金) 11:35
by Cursol

コード: 全て選択

Type Temp
	a as long
	b as long
End Type

Dim A = [0,0] as Temp
Dim B = [1,1] as Temp
Dim C = [2,2] as Temp
と言う構造体があるときにA,B,Cの各要素を足すときは

コード: 全て選択

Dim ta=0 ,tb=0, tc=0 as Long

ta = A.a + B.a + C.a
tb = A.b + B.b + C.b
tc = A.c + B.c + C.c
とすることで求める事ができますがこれを

コード: 全て選択

Dim ta=0 ,tb=0, tc=0 as Long

For i = 1 to 3
    ta = ta + X.a
    tb = tb + X.b
    tc = tc + X.c
Next
といった感じでXと言うようなもので表して表現したいんですがこのようなことは可能なのでしょうか?

Re: 構造体の使い方

Posted: 2005年6月17日(金) 18:17
by Sinryow
構造体の配列変数を使えばよいだけではないでしょうか。

コード: 全て選択

Type Temp
    a as long
    b as long
	c as long
End Type

Dim ta=0 as Long, tb=0 as Long, tc=0 as Long
Dim X[2]=[[0,0,0], [1,1,1], [2,2,2]] as Temp
Dim i As Long

For i = 1 to 3
    ta = ta + X[i-1].a
    tb = tb + X[i-1].b
    tc = tc + X[i-1].c
Next
※細かいことを言いますと
1)「Dim ta=0, tb=0, tc=0 as Long」と書くと,taとtbは変数の型を省略したとみなされます(→ABでは変数の型を省略するとDoubleになるため,CursolさんのままだとtaとtbはDoubleになってしまいます)。
2)Tempのメンバの「c」を忘れてましたよ。

Re: 構造体の使い方

Posted: 2005年6月17日(金) 20:54
by イグトランス
> For i = 1 to 3
For i = 0 to 2と書けば直にXと書けますよね。
iを画面への出力などほかに使っていなければi = 1で始めるメリットは薄いと思います。

細かいことですいませんが。

ありがとうございます。

Posted: 2005年6月18日(土) 00:51
by Cursol
>構造体の配列変数を使えばよいだけではないでしょうか。

構造体配列と言った便利な物があったのですね~。おかげさまでコードがすっきり収まりました。ありがとうございました。

>1)「Dim ta=0, tb=0, tc=0 as Long」と書くと,taとtbは変数の型を省略したとみなされます(→ABでは変数の型を省略するとDoubleになるため,CursolさんのままだとtaとtbはDoubleになってしまいます)。

うーむ、てっきりこれでよいかと思いこんでました。

>2)Tempのメンバの「c」を忘れてましたよ。

なんてこった…orz

Re: 構造体の使い方

Posted: 2005年6月18日(土) 10:16
by Sinryow
> > For i = 1 to 3
> For i = 0 to 2と書けば直にX[i]と書けますよね。
> iを画面への出力などほかに使っていなければi = 1で始めるメリットは薄いと思います。
>
> 細かいことですいませんが。

というかCursolさんのコードをなるべくいじらないようにするために1~3のままにしただけなのですねどね(^^;)