第13講 ベクタの学習
第10話 ベクタのアドレスを直接関数に渡すその2

問1 解答例
フォーム

ソースコード
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
         vector< vector<int> > a;
         a.resize(5);
         int i;
         String^ w;
         for(i=0;i<5;i++)(a[i]).resize(4);
         a=f1(a);
         w=g1(w,a);
         label1->Text=w;
         vector< vector<int> > b;
         b.resize(5);
         for(i=0;i<5;i++)(b[i]).resize(4);
         b=f1(b);
         w=L"";
         w=g1(w,b);
         label2->Text=w;
      }
      vector< vector<int> > f1(vector< vector<int> > x){
         int i,j,m,n;
         m=x.size();
         n=(x[0]).size();
         for(i=0;i<m;i++)
           for(j=0;j<n;j++)
             x[i][j]=rand()%1000;

         return(x);
       }
       String^ g1(String^ w,vector< vector<int> > x){
         int i,j,m,n;
         m=x.size();
         n=(x[0]).size();
         for(i=0;i<m;i++){
           for(j=0;j<n;j++)
             if(x[i][j]<10)
               w+=L"000"+(x[i][j]).ToString()+L" ";
             else if(x[i][j]<100)
               w+=L"00"+(x[i][j]).ToString()+L" ";
             else if(x[i][j]<1000)
               w+=L"0"+(x[i][j]).ToString()+L" ";
             else
               w+=(x[i][j]).ToString()+L" ";
             w+=L"\n";
         }
         return(w);
      }

(コピーペースト用

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
vector< vector<int> > a;
a.resize(5);
int i;
String^ w;
for(i=0;i<5;i++)(a[i]).resize(4);
a=f1(a);
w=g1(w,a);
label1->Text=w;
vector< vector<int> > b;
b.resize(5);
for(i=0;i<5;i++)(b[i]).resize(4);
b=f1(b);
w=L"";
w=g1(w,b);
label2->Text=w;

}
vector< vector<int> > f1(vector< vector<int> > x){
int i,j,m,n;
m=x.size();
n=(x[0]).size();
for(i=0;i<m;i++)
for(j=0;j<n;j++)
x[i][j]=rand()%1000;

return(x);
}
String^ g1(String^ w,vector< vector<int> > x){
int i,j,m,n;
m=x.size();
n=(x[0]).size();
for(i=0;i<m;i++){
for(j=0;j<n;j++)
if(x[i][j]<10)
w+=L"000"+(x[i][j]).ToString()+L" ";
else if(x[i][j]<100)
w+=L"00"+(x[i][j]).ToString()+L" ";
else if(x[i][j]<1000)
w+=L"0"+(x[i][j]).ToString()+L" ";
else
w+=(x[i][j]).ToString()+L" ";
w+=L"\n";
}
return(w);
}


問2解答例
フォーム

ソースコード
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
         vector< vector<int> > a;
         a.resize(5);
         int i;
         String^ w;
         for(i=0;i<5;i++)(a[i]).resize(4);
         a=f1(a);
         w=g1(w,a);
         label1->Text=w;
         vector< vector<int> > b;
         b.resize(5);
         for(i=0;i<5;i++)(b[i]).resize(4);
         b=f1(b);
         w=L"";
         w=g1(w,b);
         label2->Text=w;
         a=f2(a,b);
         w=L"";
         w=g1(w,a);
         label3->Text=w;
       }
       vector< vector<int> > f1(vector< vector<int> > x){
         int i,j,m,n;
         m=x.size();
         n=(x[0]).size();
         for(i=0;i<m;i++)
           for(j=0;j<n;j++)
             x[i][j]=rand()%1000;

         return(x);
       }
       String^ g1(String^ w,vector< vector<int> > x){
         int i,j,m,n;
         m=x.size();
         n=(x[0]).size();
         for(i=0;i<m;i++){
           for(j=0;j<n;j++)
             if(x[i][j]<10)
               w+=L"000"+(x[i][j]).ToString()+L" ";
             else if(x[i][j]<100)
               w+=L"00"+(x[i][j]).ToString()+L" ";
             else if(x[i][j]<1000)
               w+=L"0"+(x[i][j]).ToString()+L" ";
             else
               w+=(x[i][j]).ToString()+L" ";
           w+=L"\n";
         }
         return(w);
       }
       vector< vector<int> > f2(vector< vector<int> > x,vector< vector<int> > y){
         int i,j,m,n;
         m=x.size();
         n=(x[0]).size();
         for(i=0;i<m;i++)
           for(j=0;j<n;j++)
             x[i][j]=x[i][j]+y[i][j];

         return(x);
       }


(コピーペースト用

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
vector< vector<int> > a;
a.resize(5);
int i;
String^ w;
for(i=0;i<5;i++)(a[i]).resize(4);
a=f1(a);
w=g1(w,a);
label1->Text=w;
vector< vector<int> > b;
b.resize(5);
for(i=0;i<5;i++)(b[i]).resize(4);
b=f1(b);
w=L"";
w=g1(w,b);
label2->Text=w;
a=f2(a,b);
w=L"";
w=g1(w,a);
label3->Text=w;
}
vector< vector<int> > f1(vector< vector<int> > x){
int i,j,m,n;
m=x.size();
n=(x[0]).size();
for(i=0;i<m;i++)
for(j=0;j<n;j++)
x[i][j]=rand()%1000;

return(x);
}
String^ g1(String^ w,vector< vector<int> > x){
int i,j,m,n;
m=x.size();
n=(x[0]).size();
for(i=0;i<m;i++){
for(j=0;j<n;j++)
if(x[i][j]<10)
w+=L"000"+(x[i][j]).ToString()+L" ";
else if(x[i][j]<100)
w+=L"00"+(x[i][j]).ToString()+L" ";
else if(x[i][j]<1000)
w+=L"0"+(x[i][j]).ToString()+L" ";
else
w+=(x[i][j]).ToString()+L" ";
w+=L"\n";
}
return(w);
}
vector< vector<int> > f2(vector< vector<int> > x,vector< vector<int> > y){
int i,j,m,n;
m=x.size();
n=(x[0]).size();
for(i=0;i<m;i++)
for(j=0;j<n;j++)
x[i][j]=x[i][j]+y[i][j];

return(x);
}




以上でベクタの学習は終了とします。第14講では、フリーストア配列とCLI配列について学習します。


第11講第6話へ
 第12講第1話へ 第13講第9話へ 第14講第1話へ



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