トピック
ヨッシー okkun2002

FILLで2次元配列について…

FILLで2次元の2個目の方だけ0にすることは出来ませんか? 2次元以上の配列の自由度が少なくて悲しい…
0そうだね
プレイ済み
返信[1]
親投稿
みむ*mim hidemimtp
無理ですねー。もともと1次元の配列を多次元風に読んでいるだけなので、A[3,5]とかがあったとしてこの「3」や「5」を取得する事もできないんじゃないかと。やるならこの値を別変数に持っておいて、 A1=3:A2=5 FOR I=0 TO LEN(A)-1 J1=I DIV A1 J2=I MOD A2 IF J1==0 THEN A[J1,J2]=0 NEXT みたいにすればいいかな? (↑アイデアだけです。テストしてません。) そもそも認識が違ったり、他にもっとシンプルな方法があったらごめんなさい。
2そうだね
プレイ済み
返信[2]
親投稿
もし、特定の次元(以下「N次」と呼ぶこととします)の要素番号を指定して、その他の要素番号全ての配列要素に特定の値に設定するという問題でしたら、(以下ユーザ定義命令作成を想定します。) N次を指定した引数にして、N次以外の次元についてFORループで特定の値を1つ1つ設定すれば出来ると思います。(時間はかかります。) もし、N次が最も大きな次元(最も左側に記述する配列要素番号)の場合には、低次の配列と同じ構造のローカル配列変数を作りFILLで値を設定し、それを、コピー先の位置を計算してCOPYすると単純に出来ると思います。 やりたいことと、違っていたらすみません。
1そうだね
プレイ済み
返信[3]
親投稿
マギー M191246
質問の意味がわかりにくいですけど 例えば サイズA[5,8]の配列が、あったとして A[3,n]となる要素を0にしたいという意味なら FILL A,0,3*8,8 で、できるみたいです。
2そうだね
プレイ済み
返信[4]
親投稿
FILLのヘルプを見ていたらオフセットと要素数の引数がありました。低次の配列要素を初期化するには、これを使えば良いですね。
2そうだね
プレイ済み
返信[5]
親投稿
ヨッシー okkun2002
ありがとうございます!! 2次元配列も多次元風1次元なんですね。 FILLを使うことが出来ました。
0そうだね
プレイ済み
返信[6]
親投稿
みむ*mim hidemimtp
おお、なるほどー。FOR文使う必要はなさそうですね。 でもやぱり配列数の要素数は持っておかないといけないんですねー。 A[n][m]と書く言語なら、LEN(A[n])と出来たりするんですけど、プチコンは(BASICは?)出来ないですもんね。
1そうだね
プレイ済み
返信[7]
親投稿
ヨッシー okkun2002
そうですね...ちょっと不便です。 1次元がやっぱ良いのかな。
0そうだね
プレイ済み
返信[8]
親投稿
ヨッシー okkun2002
あ...2こめでなく1こめだったので 他の方法を探ります。
0そうだね
プレイ済み