第13講 ベクタの学習
第8話 3次元ベクタを関数に渡す(その2)
前話解答例
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
int n1,n2,n3,i,j,k;
n1=4;
n2=3;
n3=5;
vector< vector < vector <int> > > a(n1);
for(i=0;i<n1;i++)a[i].resize(n2);
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
a[i][j].resize(n3);
}
}
String^ w;
vector< vector < vector <int> > >::iterator
x;
x=a.begin();
w=f1(x,w,n1,n2,n3);
label1->Text=w;
w=L"";
vector< vector < vector <int> > >
b(n1);
for(i=0;i<n1;i++)b[i].resize(n2);
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
b[i][j].resize(n3);
}
}
x=b.begin();
w=f2(x,w,n1,n2,n3);
label2->Text=w;
w=L"";
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
for(k=0;k<n3;k++){
if((a[i][j][k]+b[i][j][k])<10){
w+=L"0"+(a[i][j][k]+b[i][j][k])+L"
";
}
else{
w+=a[i][j][k]+b[i][j][k]+L"
";
}
}
w+=L"\n";
}
w+=L"\n";
}
label3->Text=w;
}
String^ f1(vector< vector < vector <int> >
>::iterator x,String^ w,int n1,int n2,int n3){
int i,j,k;
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
for(k=0;k<n3;k++){
x[i][j][k]=(i+j+k)%9+1;
w+=x[i][j][k]+L" ";
}
w+=L"\n";
}
w+=L"\n";
}
return(w);
}
String^ f2(vector< vector < vector <int> >
>::iterator x,String^ w,int n1,int n2,int n3){
int i,j,k;
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
for(k=0;k<n3;k++){
x[i][j][k]=(3*i+2*j+k)%9+1;
w+=x[i][j][k]+L" ";
}
w+=L"\n";
}
w+=L"\n";
}
return(w);
}
(コピーペースト用
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
int n1,n2,n3,i,j,k;
n1=4;
n2=3;
n3=5;
vector< vector < vector <int> > > a(n1);
for(i=0;i<n1;i++)a[i].resize(n2);
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
a[i][j].resize(n3);
}
}
String^ w;
vector< vector < vector <int> > >::iterator x;
x=a.begin();
w=f1(x,w,n1,n2,n3);
label1->Text=w;
w=L"";
vector< vector < vector <int> > > b(n1);
for(i=0;i<n1;i++)b[i].resize(n2);
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
b[i][j].resize(n3);
}
}
x=b.begin();
w=f2(x,w,n1,n2,n3);
label2->Text=w;
w=L"";
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
for(k=0;k<n3;k++){
if((a[i][j][k]+b[i][j][k])<10){
w+=L"0"+(a[i][j][k]+b[i][j][k])+L" ";
}
else{
w+=a[i][j][k]+b[i][j][k]+L" ";
}
}
w+=L"\n";
}
w+=L"\n";
}
label3->Text=w;
}
String^ f1(vector< vector < vector <int> > >::iterator x,String^ w,int n1,int n2,int n3){
int i,j,k;
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
for(k=0;k<n3;k++){
x[i][j][k]=(i+j+k)%9+1;
w+=x[i][j][k]+L" ";
}
w+=L"\n";
}
w+=L"\n";
}
return(w);
}
String^ f2(vector< vector < vector <int> > >::iterator x,String^ w,int n1,int n2,int n3){
int i,j,k;
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
for(k=0;k<n3;k++){
x[i][j][k]=(3*i+2*j+k)%9+1;
w+=x[i][j][k]+L" ";
}
w+=L"\n";
}
w+=L"\n";
}
return(w);
}
)
ベクタを反復子で渡しましたが、配列のように直接アドレスを渡す方法もあります。
第9話ではその方法について研究します。
第11講第6話へ 第12講第1話へ 第13講第7話へ 第13講第9話へ
vc++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ