第14講 フリーストア配列とCLI配列
第9話 3次元CLI配列の学習
第8話問題解答例

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
         array<int,3>^ a=gcnew array<int,3>(4,5,8);
         String^ w;
         w=f1(a,w);
         label1->Text=w;
         w=L"";
         array<int,3>^ b=gcnew array<int,3>(4,5,8);
         w=f2(b,w);
         label2->Text=w;
         w=L"";
         array<int,3>^ c=gcnew array<int,3>(4,5,8);
         w=f3(a,b,c,w);
         label3->Text=w;
      }
      String^ f1(array<int,3>^ x,String^ w){
         int i,j,k,m,n,l;
         m=x->GetLength(0);
         n=x->GetLength(1);
         l=x->GetLength(2);
         for(i=0;i<m;i++)
           for(j=0;j<n;j++)
             for(k=0;k<l;k++)
               x[i,j,k]=40*i+8*j+k+1;
         for(i=0;i<m;i++){
           for(j=0;j<n;j++){
             for(k=0;k<l;k++){
               if(x[i,j,k]<10)
                 w+=L"00"+(x[i,j,k]).ToString()+L" ";
               else if(x[i,j,k]<100)
                 w+=L"0"+(x[i,j,k]).ToString()+L" ";
               else
               w+=(x[i,j,k]).ToString()+L" ";
             }
             w+=L"\n";
           }
           w+=L"\n";
         }
         return(w);
       }
      String^ f2(array<int,3>^ x,String^ w){
         int i,j,k,m,n,l;
         m=x->GetLength(0);
         n=x->GetLength(1);
         l=x->GetLength(2);
         for(i=0;i<m;i++)
           for(j=0;j<n;j++)
             for(k=0;k<l;k++)
               x[i,j,k]=40*i+5*k+j+1;
         for(i=0;i<m;i++){
           for(j=0;j<n;j++){
             for(k=0;k<l;k++){
               if(x[i,j,k]<10)
                 w+=L"00"+(x[i,j,k]).ToString()+L" ";
               else if(x[i,j,k]<100)
                 w+=L"0"+(x[i,j,k]).ToString()+L" ";
               else
                 w+=(x[i,j,k]).ToString()+L" ";
               }
               w+=L"\n";
             }
             w+=L"\n";
           }
           return(w);
         }
         String^ f3(array<int,3>^ x,array<int,3>^ y,array<int,3>^ z,String^ w){
           int i,j,k,m,n,l;
           m=x->GetLength(0);
           n=x->GetLength(1);
           l=x->GetLength(2);
           for(i=0;i<m;i++)
             for(j=0;j<n;j++)
               for(k=0;k<l;k++)
                 z[i,j,k]=x[i,j,k]+y[i,j,k];
           for(i=0;i<m;i++){
             for(j=0;j<n;j++){
               for(k=0;k<l;k++){
                 if(z[i,j,k]<10)
                   w+=L"00"+(z[i,j,k]).ToString()+L" ";
                 else if(z[i,j,k]<100)
                   w+=L"0"+(z[i,j,k]).ToString()+L" ";
                 else
                 w+=(z[i,j,k]).ToString()+L" ";
               }
               w+=L"\n";
            }
            w+=L"\n";
          }
          return(w);
        }


(コピーペースト用


private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
array<int,3>^ a=gcnew array<int,3>(4,5,8);
String^ w;
w=f1(a,w);
label1->Text=w;
w=L"";
array<int,3>^ b=gcnew array<int,3>(4,5,8);
w=f2(b,w);
label2->Text=w;
w=L"";
array<int,3>^ c=gcnew array<int,3>(4,5,8);
w=f3(a,b,c,w);
label3->Text=w;
}
String^ f1(array<int,3>^ x,String^ w){
int i,j,k,m,n,l;
m=x->GetLength(0);
n=x->GetLength(1);
l=x->GetLength(2);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
for(k=0;k<l;k++)
x[i,j,k]=40*i+8*j+k+1;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
for(k=0;k<l;k++){
if(x[i,j,k]<10)
w+=L"00"+(x[i,j,k]).ToString()+L" ";
else if(x[i,j,k]<100)
w+=L"0"+(x[i,j,k]).ToString()+L" ";
else
w+=(x[i,j,k]).ToString()+L" ";
}
w+=L"\n";
}
w+=L"\n";
}
return(w);
}
String^ f2(array<int,3>^ x,String^ w){
int i,j,k,m,n,l;
m=x->GetLength(0);
n=x->GetLength(1);
l=x->GetLength(2);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
for(k=0;k<l;k++)
x[i,j,k]=40*i+5*k+j+1;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
for(k=0;k<l;k++){
if(x[i,j,k]<10)
w+=L"00"+(x[i,j,k]).ToString()+L" ";
else if(x[i,j,k]<100)
w+=L"0"+(x[i,j,k]).ToString()+L" ";
else
w+=(x[i,j,k]).ToString()+L" ";
}
w+=L"\n";
}
w+=L"\n";
}
return(w);
}
String^ f3(array<int,3>^ x,array<int,3>^ y,array<int,3>^ z,String^ w){
int i,j,k,m,n,l;
m=x->GetLength(0);
n=x->GetLength(1);
l=x->GetLength(2);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
for(k=0;k<l;k++)
z[i,j,k]=x[i,j,k]+y[i,j,k];
for(i=0;i<m;i++){
for(j=0;j<n;j++){
for(k=0;k<l;k++){
if(z[i,j,k]<10)
w+=L"00"+(z[i,j,k]).ToString()+L" ";
else if(z[i,j,k]<100)
w+=L"0"+(z[i,j,k]).ToString()+L" ";
else
w+=(z[i,j,k]).ToString()+L" ";
}
w+=L"\n";
}
w+=L"\n";
}
return(w);
}








第11講第6話へ
 第12講第1話へ 第13講第10話へ 第14講第8話へ 第14講第10話へ


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