第29講 細胞構成法による魔方陣の作成の普遍化△
第6話 普遍暫定版のコード解説
コード再掲
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
label2->Text=L"";
DateTime^ hj=DateTime::Now;
n=int::Parse(textBox1->Text);
char h=1,hh;
if(n<3 || n>30 || (n%4==0 && n>4) || n==18){
label2->Text=L"TextBoxには3以上30以下で8,12,16,18,20以外の整数\r\nを入力し再度実行ボタンを\r\n押して下さい。";
h=0;
}
if(h==1 && (n==3 || n==4)){
s=0;
cn=0;
gkh=0;
syokika();
if(n==3)g1(n);
if(n==4)g2(n);
f1(0);
array<String^>^ w=gcnew array<String^>(31);
int i;
w[25]=n.ToString();w[26]=L"次";w[27]=L"魔";w[28]=L"方";w[29]=L"陣";w[30]=s.ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
DateTime^ ow=DateTime::Now;
TimeSpan sa=ow->Subtract(*hj);
w[25]=L"時";w[26]=L"間";w[27]=L"計";w[28]=L"則";w[29]=L":";w[30]=(sa.TotalSeconds).ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
}
if(h==1 && n!=3 && n%2==1){
gkh=0;
s=0;
cn=0;
hh=sh();
if(hh==0){
kf1(0);
array<String^>^ w=gcnew array<String^>(31);
int i;
w[25]=n.ToString();w[26]=L"次";w[27]=L"魔";w[28]=L"方";w[29]=L"陣";w[30]=s.ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
DateTime^ ow=DateTime::Now;
TimeSpan sa=ow->Subtract(*hj);
w[25]=L"時";w[26]=L"間";w[27]=L"計";w[28]=L"則";w[29]=L":";w[30]=(sa.TotalSeconds).ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
}
if(hh==1){
s=0;
cn=0;
if(n%2==1)g1(n);
if(n%2==0)g2(n);
syokika();
f0(0);
array<String^>^ w=gcnew array<String^>(31);
int i;
w[25]=n.ToString();w[26]=L"次";w[27]=L"魔";w[28]=L"方";w[29]=L"陣";w[30]=s.ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
DateTime^ ow=DateTime::Now;
TimeSpan sa=ow->Subtract(*hj);
w[25]=L"時";w[26]=L"間";w[27]=L"計";w[28]=L"則";w[29]=L":";w[30]=(sa.TotalSeconds).ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
}
}
if(h==1 && n>4 && n%2==0){
gkh=1;
kz=0;
n=n/2;
s=0;
cn=0;
syokika();
if(n%2==1)g1(n);
if(n%2==0)g2(n);
zhy();
sbs(0);
sbg(0);
array<String^>^ w=gcnew array<String^>(31);
int i;
w[25]=(2*n).ToString();w[26]=L"次";w[27]=L"魔";w[28]=L"方";w[29]=L"陣";w[30]=s.ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
DateTime^ ow=DateTime::Now;
TimeSpan sa=ow->Subtract(*hj);
w[25]=L"時";w[26]=L"間";w[27]=L"計";w[28]=L"則";w[29]=L":";w[30]=(sa.TotalSeconds).ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
}
}
void f00(int g){
・
・
・
if(h==1){
if(g+1<n){
f00(g+1);
}
else{
for(j=1;j<n;j++){
for(k=0;k<n;k++){
l=(3*j+k)%n;
a2[j][l]=a2[0][k];
}
}
if(gkh==1){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
for(l=0;l<2;l++){
for(o=0;o<2;o++){
mah[2*j+l][2*k+o]=4*(n*a1[j][k]+a2[j][k])+a3[2*j+l][2*k+o];
}
}
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<2*n;j++){
for(k=0;k<2*n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
}
if(gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
}
s++;
if(s==100)return;
}
}
}
・
・
・
void sbg(int g){
・
・
・
if(h==1){
if(g+1<n*n){
sbg(g+1);
}
else{
if(n!=3 && (n!=4 || gkh==0))f0(0);
if(n==3)f1(0);
if(n==4 && gkh==1)f1(0);
}
}
}
}
void f2(int g){
・
・
・
if(g<n*n-1){
f2(g+1);
}
else{
if(n!=3 && gkh==1){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
for(l=0;l<2;l++){
for(o=0;o<2;o++){
mah[2*j+l][2*k+o]=4*(n*a1[j][k]+a2[j][k])+a3[2*j+l][2*k+o];
}
}
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<2*n;j++){
for(k=0;k<2*n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
s++;
if(s==100)return;
}
if(n!=3 && n!=4 && gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
s++;
if(s==100)return;
}
if(n==3 && gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
s++;
if(s==100)return;
}
if(n==4 && gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
s++;
if(s==100)return;
}
if(n==3 && gkh==1){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
for(l=0;l<2;l++){
for(o=0;o<2;o++){
mah[2*j+l][2*k+o]=4*(n*a1[j][k]+a2[j][k])+a3[2*j+l][2*k+o];
}
}
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<2*n;j++){
for(k=0;k<2*n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
s++;
if(s==100)return;
}
・
・
・
複雑すぎるコードを解説していきましょう。
尚、もっとすっきりしたコードが思い浮かんだ方はメールに添付して送っていただけると、ありがたいです。
お名前またはHNを明記の上紹介させていただきます。
もっと簡単なコードがあるはずですが、
ぼんくらな私の頭では現時点では思いつきません。
ただ、凡庸な頭でも粘り強く考えていると、思い浮かぶこともありますので、
もし思いついたら、そのコードをアップしたいと思います。
まず、
if(h==1 && (n==3 || n==4)){
s=0;
cn=0;
gkh=0;
syokika();
if(n==3)g1(n);
if(n==4)g2(n);
f1(0);
array<String^>^ w=gcnew array<String^>(31);
int i;
w[25]=n.ToString();w[26]=L"次";w[27]=L"魔";w[28]=L"方";w[29]=L"陣";w[30]=s.ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
DateTime^ ow=DateTime::Now;
TimeSpan sa=ow->Subtract(*hj);
w[25]=L"時";w[26]=L"間";w[27]=L"計";w[28]=L"則";w[29]=L":";w[30]=(sa.TotalSeconds).ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
}
は3次または4次の場合のコードです。
この場合は、末項確定法を利用しています。
末項確定法で、
2 | 9 | 4 |
7 | 5 | 3 |
6 | 1 | 8 |
3 | 13 | 10 | 8 |
16 | 2 | 5 | 11 |
6 | 12 | 15 | 1 |
9 | 7 | 4 | 14 |
3次魔方陣と4次魔方陣をf1()とf2()でつくり、f2()の
if(n==3 && gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
s++;
if(s==100)return;
}
if(n==4 && gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
s++;
if(s==100)return;
}
によって、そのままデータグリッドビューに表示しています。
gkh==0は最初に入力された数が4を除いた偶数でないことを示しています。
gkhは偶数判定をするための変数です。
4でない偶数のときは1、4または奇数のときは0と入力されます。
if(h==1 && (n==3 || n==4)){
s=0;
cn=0;
gkh=0;
・
・
if(h==1 && n!=3 && n%2==1){
gkh=0;
・
・
if(h==1 && n>4 && n%2==0){
gkh=1;
kz=0;
n=n/2;
s=0;
cn=0;
syokika();
if(n%2==1)g1(n);
if(n%2==0)g2(n);
zhy();
sbs(0);
sbg(0);
・
・
gkh==0ときは
if(n==3 && gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
s++;
if(s==100)return;
}
if(n==4 && gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
s++;
if(s==100)return;
}
によって、そのままデータグリッドビューに出力されます。
nが4より大きい偶数なら
if(h==1 && n>4 && n%2==0){
gkh=1;
kz=0;
n=n/2;
s=0;
cn=0;
syokika();
if(n%2==1)g1(n);
if(n%2==0)g2(n);
zhy();
sbs(0);
sbg(0);
が遂行されます。
例えば、n=14であった場合は
このときは、2で割って、7次にしてsbs(0);によって細胞をすべて作り出させ、
sbg(0);においてそのすべての細胞を適宜組み合わせて合成させています。
void sbg(int g){
・
・
・
if(h==1){
if(g+1<n*n){
sbg(g+1);
}
else{
if(n!=3 && (n!=4 || gkh==0))f0(0);
if(n==3)f1(0);
if(n==4 && gkh==1)f1(0);
}
}
}
}
細胞の合成が行われた後、f0からf00へと飛び
void f00(int g){
・
・
・
if(h==1){
if(g+1<n){
f00(g+1);
}
else{
for(j=1;j<n;j++){
for(k=0;k<n;k++){
l=(3*j+k)%n;
a2[j][l]=a2[0][k];
}
}
if(gkh==1){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
for(l=0;l<2;l++){
for(o=0;o<2;o++){
mah[2*j+l][2*k+o]=4*(n*a1[j][k]+a2[j][k])+a3[2*j+l][2*k+o];
}
}
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<2*n;j++){
for(k=0;k<2*n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
}
・
・
において7次魔方陣と組み合わされます。
3 | 4 | 3 | 1 | 3 | 2 | 2 | 3 | 1 | 4 | 1 | 2 | 2 | 4 |
2 | 1 | 2 | 4 | 1 | 4 | 4 | 1 | 2 | 3 | 3 | 4 | 3 | 1 |
4 | 2 | 2 | 4 | 2 | 1 | 2 | 4 | 4 | 1 | 4 | 1 | 1 | 3 |
3 | 1 | 3 | 1 | 3 | 4 | 3 | 1 | 2 | 3 | 3 | 2 | 2 | 4 |
4 | 2 | 3 | 4 | 4 | 3 | 2 | 1 | 3 | 2 | 1 | 2 | 1 | 3 |
1 | 3 | 1 | 2 | 1 | 2 | 3 | 4 | 1 | 4 | 3 | 4 | 2 | 4 |
3 | 2 | 2 | 4 | 4 | 2 | 1 | 4 | 4 | 2 | 2 | 1 | 3 | 1 |
1 | 4 | 3 | 1 | 3 | 1 | 2 | 3 | 3 | 1 | 4 | 3 | 2 | 4 |
4 | 3 | 4 | 1 | 1 | 3 | 1 | 4 | 3 | 4 | 1 | 2 | 3 | 1 |
2 | 1 | 3 | 2 | 4 | 2 | 2 | 3 | 2 | 1 | 3 | 4 | 4 | 2 |
1 | 2 | 3 | 1 | 2 | 3 | 4 | 2 | 3 | 4 | 3 | 1 | 4 | 2 |
3 | 4 | 2 | 4 | 4 | 1 | 3 | 1 | 1 | 2 | 2 | 4 | 3 | 1 |
3 | 4 | 1 | 2 | 2 | 3 | 2 | 1 | 4 | 3 | 2 | 4 | 3 | 1 |
1 | 2 | 3 | 4 | 1 | 4 | 4 | 3 | 2 | 1 | 3 | 1 | 2 | 4 |
0 | 8 | 16 | 24 | 32 | 40 | 48 |
39 | 47 | 6 | 7 | 15 | 23 | 31 |
22 | 30 | 38 | 46 | 5 | 13 | 14 |
12 | 20 | 21 | 29 | 37 | 45 | 4 |
44 | 3 | 11 | 19 | 27 | 28 | 36 |
34 | 35 | 43 | 2 | 10 | 18 | 26 |
17 | 25 | 33 | 41 | 42 | 1 | 9 |
が合体され
3 | 4 | 35 | 33 | 67 | 66 | 98 | 99 | 129 | 132 | 161 | 162 | 194 | 196 |
2 | 1 | 34 | 36 | 65 | 68 | 100 | 97 | 130 | 131 | 163 | 164 | 195 | 193 |
160 | 158 | 190 | 192 | 26 | 25 | 30 | 32 | 64 | 61 | 96 | 93 | 125 | 127 |
159 | 157 | 191 | 189 | 27 | 28 | 31 | 29 | 62 | 63 | 95 | 94 | 126 | 128 |
92 | 90 | 123 | 124 | 156 | 155 | 186 | 185 | 23 | 22 | 53 | 54 | 57 | 59 |
89 | 91 | 121 | 122 | 153 | 154 | 187 | 188 | 21 | 24 | 55 | 56 | 58 | 60 |
51 | 50 | 82 | 84 | 88 | 86 | 117 | 120 | 152 | 150 | 182 | 181 | 19 | 17 |
49 | 52 | 83 | 81 | 87 | 85 | 118 | 119 | 151 | 149 | 184 | 183 | 18 | 20 |
180 | 179 | 16 | 13 | 45 | 47 | 77 | 80 | 111 | 112 | 113 | 114 | 147 | 145 |
178 | 177 | 15 | 14 | 48 | 46 | 78 | 79 | 110 | 109 | 115 | 116 | 148 | 146 |
137 | 138 | 143 | 141 | 174 | 175 | 12 | 10 | 43 | 44 | 75 | 73 | 108 | 106 |
139 | 140 | 142 | 144 | 176 | 173 | 11 | 9 | 41 | 42 | 74 | 76 | 107 | 105 |
71 | 72 | 101 | 102 | 134 | 135 | 166 | 165 | 172 | 171 | 6 | 8 | 39 | 37 |
69 | 70 | 103 | 104 | 133 | 136 | 168 | 167 | 170 | 169 | 7 | 5 | 38 | 40 |
となります。合体の仕方は、
for(j=0;j<n;j++){
for(k=0;k<n;k++){
for(l=0;l<2;l++){
for(o=0;o<2;o++){
mah[2*j+l][2*k+o]=4*(n*a1[j][k]+a2[j][k])+a3[2*j+l][2*k+o];
}
}
}
}
15 |
を4倍し、それに
4 | 1 |
2 | 3 |
を加えます。
64 | 61 |
62 | 63 |
また、3以外の奇数が入力された場合は、
if(h==1 && n!=3 && n%2==1){
gkh=0;
s=0;
cn=0;
hh=sh();
if(hh==0){
kf1(0);
array<String^>^ w=gcnew array<String^>(31);
int i;
w[25]=n.ToString();w[26]=L"次";w[27]=L"魔";w[28]=L"方";w[29]=L"陣";w[30]=s.ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
DateTime^ ow=DateTime::Now;
TimeSpan sa=ow->Subtract(*hj);
w[25]=L"時";w[26]=L"間";w[27]=L"計";w[28]=L"則";w[29]=L":";w[30]=(sa.TotalSeconds).ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
}
if(hh==1){
s=0;
cn=0;
if(n%2==1)g1(n);
if(n%2==0)g2(n);
syokika();
f0(0);
array<String^>^ w=gcnew array<String^>(31);
int i;
w[25]=n.ToString();w[26]=L"次";w[27]=L"魔";w[28]=L"方";w[29]=L"陣";w[30]=s.ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
DateTime^ ow=DateTime::Now;
TimeSpan sa=ow->Subtract(*hj);
w[25]=L"時";w[26]=L"間";w[27]=L"計";w[28]=L"則";w[29]=L":";w[30]=(sa.TotalSeconds).ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
}
}
それが素数であるか、素数以外の奇数以外かで処理が異なります。
素数の場合の処理が、
if(hh==1){
s=0;
cn=0;
if(n%2==1)g1(n);
if(n%2==0)g2(n);
syokika();
f0(0);
array<String^>^ w=gcnew array<String^>(31);
int i;
w[25]=n.ToString();w[26]=L"次";w[27]=L"魔";w[28]=L"方";w[29]=L"陣";w[30]=s.ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
DateTime^ ow=DateTime::Now;
TimeSpan sa=ow->Subtract(*hj);
w[25]=L"時";w[26]=L"間";w[27]=L"計";w[28]=L"則";w[29]=L":";w[30]=(sa.TotalSeconds).ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
}
で行われます。素数の場合は、素数次魔方陣の種を作るf0とf00によって2つの種がずらし法で作られ、
void f00(int g){
・
・
・
if(h==1){
if(g+1<n){
f00(g+1);
}
else{
for(j=1;j<n;j++){
for(k=0;k<n;k++){
l=(3*j+k)%n;
a2[j][l]=a2[0][k];
}
}
if(gkh==1){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
for(l=0;l<2;l++){
for(o=0;o<2;o++){
mah[2*j+l][2*k+o]=4*(n*a1[j][k]+a2[j][k])+a3[2*j+l][2*k+o];
}
}
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<2*n;j++){
for(k=0;k<2*n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
}
if(gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
}
s++;
if(s==100)return;
}
}
}
の
if(gkh==0){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
mah[j][k]=n*a1[j][k]+a2[j][k]+1;
}
}
array<String^>^ w=gcnew array<String^>(30);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
w[k]=(mah[j][k]).ToString();
}
dataGridView1->Rows->Add(w);
}
for(j=0;j<30;j++)w[j]=L"";
dataGridView1->Rows->Add(w);
によって直接データグリッドビューに出力されます。
直接というのは、細胞合成による倍加がされず、出力されるという意味です。
素数でない奇数の場合は、
if(hh==0){
kf1(0);
array<String^>^ w=gcnew array<String^>(31);
int i;
w[25]=n.ToString();w[26]=L"次";w[27]=L"魔";w[28]=L"方";w[29]=L"陣";w[30]=s.ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
DateTime^ ow=DateTime::Now;
TimeSpan sa=ow->Subtract(*hj);
w[25]=L"時";w[26]=L"間";w[27]=L"計";w[28]=L"則";w[29]=L":";w[30]=(sa.TotalSeconds).ToString();
for(i=0;i<25;i++)w[i]=L"";
dataGridView1->Rows->Add(w);
}
の処理が行われます。
この後の動きは、前話をご覧ください。
第5話へ 第7話へ
VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual
Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)