第14講 フリーストア配列とCLI配列
第4話 2次元フリーストア配列を関数に送るその2
第3話最終問題解答例
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
        int** a=new int*[5];
        int i;
        for(i=0;i<5;i++)a[i]=new int[6];
        String^ w;
        w=f1(a,w);
        label1->Text=w;
        w=L"";
        int** b=new int*[5];
        for(i=0;i<5;i++)b[i]=new int[6];
        w=f2(b,w);
        label2->Text=w;
        w=L"";
        int** c=new int*[5];
        for(i=0;i<5;i++)c[i]=new int[6];
        w=f3(a,b,c,w);
        label3->Text=w;
        delete[] a;
        delete[] b;
        delete[] c;
      }
      String^ f1(int** x,String^ w){
        int i,j;
        for(i=0;i<5;i++){
          for(j=0;j<6;j++){
            x[i][j]=6*i+j+1;
            if(x[i][j]<10)
              w+=L"0"+(x[i][j]).ToString()+L" ";
            else
              w+=(x[i][j]).ToString()+L" ";
          }
          w+=L"\n";
        }
        return(w);
      }
      String^ f2(int** x,String^ w){
        int i,j;
        for(i=0;i<5;i++){
          for(j=0;j<6;j++){
            x[i][j]=5*j+i+1;
            if(x[i][j]<10)
              w+=L"0"+(x[i][j]).ToString()+L" ";
            else
              w+=(x[i][j]).ToString()+L" ";
          }
          w+=L"\n";
        }
        return(w);
      }
      String^ f3(int** x,int** y,int** z,String^ w){
        int i,j;
        for(i=0;i<5;i++){
          for(j=0;j<6;j++){
            z[i][j]=x[i][j]+y[i][j];
            if(z[i][j]<10)
              w+=L"0"+(z[i][j]).ToString()+L" ";
            else
              w+=(z[i][j]).ToString()+L" ";
          }
          w+=L"\n";
        }
        return(w);
      }

(コピーペースト用

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
int** a=new int*[5];
int i;
for(i=0;i<5;i++)a[i]=new int[6];
String^ w;
w=f1(a,w);
label1->Text=w;
w=L"";
int** b=new int*[5];
for(i=0;i<5;i++)b[i]=new int[6];
w=f2(b,w);
label2->Text=w;
w=L"";
int** c=new int*[5];
for(i=0;i<5;i++)c[i]=new int[6];
w=f3(a,b,c,w);
label3->Text=w;
delete[] a;
delete[] b;
delete[] c;
}
String^ f1(int** x,String^ w){
int i,j;
for(i=0;i<5;i++){
for(j=0;j<6;j++){
x[i][j]=6*i+j+1;
if(x[i][j]<10)
w+=L"0"+(x[i][j]).ToString()+L" ";
else
w+=(x[i][j]).ToString()+L" ";
}
w+=L"\n";
}
return(w);
}
String^ f2(int** x,String^ w){
int i,j;
for(i=0;i<5;i++){
for(j=0;j<6;j++){
x[i][j]=5*j+i+1;
if(x[i][j]<10)
w+=L"0"+(x[i][j]).ToString()+L" ";
else
w+=(x[i][j]).ToString()+L" ";
}
w+=L"\n";
}
return(w);
}
String^ f3(int** x,int** y,int** z,String^ w){
int i,j;
for(i=0;i<5;i++){
for(j=0;j<6;j++){
z[i][j]=x[i][j]+y[i][j];
if(z[i][j]<10)
w+=L"0"+(z[i][j]).ToString()+L" ";
else
w+=(z[i][j]).ToString()+L" ";
}
w+=L"\n";
}
return(w);
}


それでは次に、3次元フリーストア配列に挑戦しましょう。
実行結果がとなるように改造します。
3次元配列を用意するには、
int*** a=new int**[4];
int i,j;
for(i=0;i<4;i++)a[i]=new int*[5];
  for(i=0;i<4;i++)
    for(j=0;j<5;j++)
      a[i][j]=new int[6];
のようにします。


第11講第6話へ
 第12講第1話へ 第13講第10話へ 第14講第3話へ 第14講第5話へ



vc++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ