ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 21:51

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 
作成者 メッセージ
 記事の件名: 構造体の使い方
投稿記事Posted: 2005年6月17日(金) 11:35 
コード:
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 
オフライン

登録日時: 2005年5月31日(火) 09:34
記事: 141
お住まい: 北海道
構造体の配列変数を使えばよいだけではないでしょうか。
コード:
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」を忘れてましたよ。

_________________
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================


通報する
ページトップ
 記事の件名: Re: 構造体の使い方
投稿記事Posted: 2005年6月17日(金) 20:54 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
> For i = 1 to 3
For i = 0 to 2と書けば直にXと書けますよね。
iを画面への出力などほかに使っていなければi = 1で始めるメリットは薄いと思います。

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


通報する
ページトップ
投稿記事Posted: 2005年6月18日(土) 00:51 
>構造体の配列変数を使えばよいだけではないでしょうか。

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

>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 
オフライン

登録日時: 2005年5月31日(火) 09:34
記事: 141
お住まい: 北海道
> > For i = 1 to 3
> For i = 0 to 2と書けば直にX[i]と書けますよね。
> iを画面への出力などほかに使っていなければi = 1で始めるメリットは薄いと思います。
>
> 細かいことですいませんが。

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

_________________
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[13人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean