• 締切済み

多段階配列について

Edx() = (x,y,z・・・)→Edxは変数の配列 For i = 1 To 3 Idx(i) = Edx() Next みたいなイメージで、 最終的には Idx(1).(x,y,z・・・) Idx(2).(a,b,c・・・) Idx(3).(f,g,l・・・) のような感じにしたいのですが、 どのように宣言、コーディングすれば宜しいんでしょうか?多段階配列について流れを教えていただきたいです。

noname#15844
noname#15844

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

●言語は何ですか。言語で違いが大きい。 ●多段階配列について 一般に、多次元配列という言葉があります。それと言葉を変えたのは 意味があってのことですか。 ●多次元配列は、VB6として、1つの要素なら A(1,1,1)=2 のように表現するだけです。 ●しかし、任意の指定値(ForNextを使ってできる規則的な値の場合は除く、Arrayは除く)で、複数要素を一度に初期化することを聞いているのですか。 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaInitArrayFuntions.html で関数を作っている方がいるように、普通には「できない」というのが結論のようですね。

回答No.1

VB.Netしか分らないですが、こういうことでしょうか? Dim D1()() As Integer D1 = New Integer(2)(){} D1(0) = New Integer(){ 20, 39 } '2 個の要素をもつ配列 D1(1) = New Integer(){ 1, 2, 3, 4 } '4 個の要素をもつ配列 D1(2) = New Integer(2){} '3 個の要素をもつ配列 D1(2)(1) = 20

参考URL:
http://www.microsoft.com/japan/msdn/net/vbnetref/vbnetref3-3.asp

関連するQ&A

  • 3次元配列から2次元配列に

    3次元配列のデータを2次元配列に移すにはどのように したらよいのでしょうか.とりあえず下記のように考えてみましたが. data3[500][500][4000]; //3次元配列 data2[500][500]; //2次元配列 for(y=0; y<500; y++) for(x=0; x<500; x++){ for(z=0; z<4000; z++){ data2[y][x] = data3[y][x][z]; } } } これでいいのでしょうか?

  • C言語、配列の積

    整数型二次元配列x,yに適当な値をキーボードから入力し、次にそれらの行列の積を計算して二次元配列zに代入し、行列x,y,zの要素を出力せよ。但し、配列の大きさは最初にキーボードから入力しておき、変数宣言においては、配列の大きさを大きめに宣言しておき、キーボードから入力する配列の大きさはその範囲内で入力するようにせよ。 という問題です。よろしくお願いいたします

  • smartyの配列について

    お世話になっております。 maru7406と申します。 今、phpとsmartyでかなり困っております。 お分かりの方がいましたら教えてください。 {section name=AAA loop=BBB} {assign var="idx" value=$smarty.section.AAA.index}  {section name=aaa loop=bbb}  {assign var="idy" value=$smarty.section.aaa.index}  {/section} {/section} で、ループ処理をしようと考えております。 loop=bbbの後ろに文字列として$idxを|cat:で連結し、 ループをまわしたいのですが、うまくいきません。 ちなみにappendしている部分は、 $z = 0; $x = substr($_stationInfo_list[0][line_cd],0,5);  for ($y=0; $x === $_stationInfo_list[$y][line_cd]; $y++)   {    $this->append("BBB".$z, $_stationInfo_list[$y]);   } $z = 1; while($z < count($_stationName)){  $x = substr($_stationInfo_list[$y][line_cd],0,5);   for ($y=$y; $x === $_stationInfo_list[$y][line_cd]; $y++)    {    $this->append("BBB".$z, $_stationInfo_list[$y]);    }    $z++;   } です。 loop=bbb0という配列が欲しいのですが。 ちなみに、 {bbb0|@debug_print_var}では望んでいる配列がアサインされているのを確認しています。 単純に、{section name=aaa loop=bbb|cat:$idx} では何がうまくいかないのでしょうか。 わかる方がおりましたらよろしくお願いいたします。

    • 締切済み
    • PHP
  • 関数に配列を渡すときの質問です

    関数に配列を渡したいんですがこのソースが問題ないか見てください。 #include<stdio.h> #define N 10 #define M 20 int sig(int X[],int x); main() { int a[N],b[M],i,x,y; for(i=0 ; i<N ; i++){ a[i]=i; } for(i=0 ; i<M ; i++){ b[i]=i; } x=sig(a,N); y=sig(b,M); } int sig(int Z[],int x){ int i,k; k=0; for(i=0 ; i<x ; i++){ k=k+Z[i]; } return k; } ソースは以上です。 1つのソースの中でa[N]とb[M]のように違う数の 配列があるんですが、その配列全部(0~N-1、0~M-1)とかを足してくれる(シグマ)関数を作りたいんですが、Z[]と配列の数を指定しなくてもちゃんと動いてくれるんでしょうか?関数のほうの int x で配列の数を指定するようにしています。 自分でテストした限りではちゃんと動いているようなんですが、間違ってるようなら指摘お願いします。

  • C言語での配列順序を変えたい

    C言語で遺伝的アルゴリズムを作ろうと思っています。そのときに「配列の中の値を調べてそれを数字の高い順に別の配列に入れる」というので、並び替える方法がわかりません。 for(i=0;i<10;i++){ //並び替える前をy、並び替えた後をzとする for(j=0;j<10;j++){ if(y[i] < y[j]){ z[i+1] = y[i]; }else{ z[i-1] = y[i]; } } } としてやってみたら、よく考えると上の配列に値があった場合、重なってしまうので、実際表示して見たところ同じような数字が出てきました。

  • 配列変数に格納したデータを計算する方法はありますか?

     簡単な例ですが、例えばB列にあるデータの平均値を求めるときに以下のようにしています。 sub 平均計算()   Dim X(1 To 1000, 1 To 1) As Variant, i as Integer   For i = 10 To 1000     X(i, 1) = WorksheetFunction.Average _          (Range(Cells(i - 9, 2), Cells(i, 2)))   Next   Range(Cells(1, 1), Cells(1000, 1)) = X End Sub  ここで処理速度改善のため、B列のデータを別の配列変数Yに格納してから平均値を求めるというようなことをしたいのですが、そんなことは可能でしょうか?イメージとしてはこんな感じです。   Y = Range(Cells(1, 2), Cells(1000, 2))   for i = 1 to 1000     X(i, 1) = WorksheetFunction.Average _          (Range(Y(i - 9, 2), Y(i, 2)))   Next  当然これはエラーになってしまいますが、このようなことを可能にする方法があれば、どなたか教えてください!よろしくお願いします。

  • 配列の結合?について

    . . Dim GetDate for i=startYear to lastYear GetDate = obj.xxxx i = i + 1 next . . このような形で年度別にGetDateに配列でデータを格納しています。 この年度別に作られる配列を一つの配列変数に代入したいのですが、 どうすればよろしいでしょうか?

  • 配列の逆順コピー

    for文を使って、配列xの並びを逆順にしたものを配列yにコピーするプログラムを作りたいのですがうまくいきません。どうすればよいでしょうか? #include<iostream.h> int main(void){ int i,j; int x[5]={1,2,3,4,5}; int y[5]; for(i=4;i>=0;i--){ for(j=0;j<5;j++){ x[i]=y[j]; } } for(j=0;j<5;j++) cout<<y[j]<<endl; return 0; }

  • 効率のよい方法ないでしょうか?(VB.NET 2002)

    a,b,c,d,e (100) という配列があり、それぞれ、 1~100までの数字をばらばらに入れたいのです。 ↓のプログラムを変数の分書かなくてはいけないのでしょうか? (Control変数は使えないようですし・・・) For for_i = 1 To 200 x = Int(Rnd() * 100) + 1 y = Int(Rnd() * 100) + 1 st = a(y) a(y) = a(x) a(x) = st next For for_i = 1 To 200 x = Int(Rnd() * 100) + 1 y = Int(Rnd() * 100) + 1 st = b(y) b(y) = b(x) b(x) = st next 以下省略!!

  • ループ内で変数を配列に入れる

    関数からの返り値を、1~X回取得したいと考えています。 Msgboxで表示させると以下のソースでRetに返り値が入ってきます。 それを配列に入れることってできないのでしょうか? *****部分に Array()=Ret とやっても、コンパイルエラーで 「配列には当てはまりません」と出てきます。 for i = 1 to X    ID = ID & i   Ret =Kansu(hiki1,ID)    ******************** next i 返り値を個別に変数として使いたい→配列に入れればいいや ・・・という発想が 間違っているのでしょうか? 文字列を分割してその結果を配列に入れて行く、ということはできるのに もっと単純そうなこれが何故できないのでしょう・・・(涙)。 わかりにくい説明ですみませんが、 どなたかわかる方、教えてください。

専門家に質問してみよう