第25講 様々なループ文
第4話 while文、do...while文による2次元ループ
第3話問題解答例
while文の場合
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
int **a,**b,i;
String^ w;
a=(int**)malloc(100);
for(i=0;i<5;i++)a[i]=(int*)malloc(20);
b=(int**)malloc(100);
for(i=0;i<5;i++)b[i]=(int*)malloc(20);
f1(a); //データ1発生
w=L"";//データ1表示
w=f2(a,w);
label1->Text=w;
f3(b); //データ2発生
w=L"";//データ2表示
w=f4(b,w);
label2->Text=w;
w=L"";//データ1とデータ2の和の計算と表示
w=f5(a,b,w);
label3->Text=w;
}
void f1(int** a){
int i,j;
i=0;
while(i<5){
j=0;
while(j<5){
a[i][j]=5*i+j+1;
j++;
}
i++;
}
}
String^ f2(int** a,String^ w ){
int i,j;
i=0;
while(i<5){
j=0;
while(j<5){
if(a[i][j]<10)w+=L"0"+(a[i][j]).ToString()+L"
";
if(a[i][j]>=10)w+=(a[i][j]).ToString()+L" ";
j++;
}
w+=L"\n";
i++;
}
return w;
}
void f3(int** b){
int i,j;
i=0;
while(i<5){
j=0;
while(j<5){
b[j][i]=5*i+j+1;
j++;
}
i++;
}
}
String^ f4(int** b,String^ w){
int i,j;
i=0;
while(i<5){
j=0;
while(j<5){
if(b[i][j]<10)w+=L"0"+(b[i][j]).ToString()+L" ";
if(b[i][j]>=10)w+=(b[i][j]).ToString()+L" ";
j++;
}
w+=L"\n";
i++;
}
return w;
}
String^ f5(int** a,int** b,String^ w){
int i,j;
i=0;
while(i<5){
j=0;
while(j<5){
if((a[i][j]+b[i][j])<10)w+=L"0"+(a[i][j]+b[i][j]).ToString()+L"
";
if((a[i][j]+b[i][j])>=10)w+=(a[i][j]+b[i][j]).ToString()+L"
";
j++;
}
w+=L"\n";
i++;
}
return w;
}
};
}
do...while文の場合
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
int **a,**b,i;
String^ w;
a=(int**)malloc(100);
for(i=0;i<5;i++)a[i]=(int*)malloc(20);
b=(int**)malloc(100);
for(i=0;i<5;i++)b[i]=(int*)malloc(20);
f1(a); //データ1発生
w=L"";//データ1表示
w=f2(a,w);
label1->Text=w;
f3(b); //データ2発生
w=L"";//データ2表示
w=f4(b,w);
label2->Text=w;
w=L"";//データ1とデータ2の和の計算と表示
w=f5(a,b,w);
label3->Text=w;
}
void f1(int** a){
int i,j;
i=0;
do{
j=0;
do{
a[i][j]=5*i+j+1;
j++;
}while(j<5);
i++;
}while(i<5);
}
String^ f2(int** a,String^ w ){
int i,j;
i=0;
do{
j=0;
do{
if(a[i][j]<10)w+=L"0"+(a[i][j]).ToString()+L"
";
if(a[i][j]>=10)w+=(a[i][j]).ToString()+L" ";
j++;
}while(j<5);
w+=L"\n";
i++;
}while(i<5);
return w;
}
void f3(int** b){
int i,j;
i=0;
do{
j=0;
do{
b[j][i]=5*i+j+1;
j++;
}while(j<5);
i++;
}while(i<5);
}
String^ f4(int** b,String^ w){
int i,j;
i=0;
do{
j=0;
do{
if(b[i][j]<10)w+=L"0"+(b[i][j]).ToString()+L" ";
if(b[i][j]>=10)w+=(b[i][j]).ToString()+L" ";
j++;
}while(j<5);
w+=L"\n";
i++;
}while(i<5);
return w;
}
String^ f5(int** a,int** b,String^ w){
int i,j;
i=0;
do{
j=0;
do{
if((a[i][j]+b[i][j])<10)w+=L"0"+(a[i][j]+b[i][j]).ToString()+L"
";
if((a[i][j]+b[i][j])>=10)w+=(a[i][j]+b[i][j]).ToString()+L"
";
j++;
}while(j<5);
w+=L"\n";
i++;
}while(i<5);
return w;
}
};
}
それでは皆さん、while文による3次元ループに挑戦してみましょう。
Form1を
として、
実行結果が
となるようなプログラミングを考えてみてください。
第3話へ 第5話へ
VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual
Basic入門基礎講座