第9講 ポインタの学習  
第7話 ポインタおよび1次元配列による6次魔方陣作成プログラム

ポインタによるコード例
#include<iostream>
using namespace std;
using namespace System;
void f();
int main(){
   f();
}
void f(){
   int *m,i,j;
   m=(int *)malloc(144);
   for(i=0;i<6;i++){
     for(j=0;j<6;j++){
       *(m+6*i+j)=6*i+j+1;
       if(*(m+6*i+j)<10)cout<<"0"<<*(m+6*i+j)<<" ";
       if(*(m+6*i+j)>=10)cout<<*(m+6*i+j)<<" ";
     }
     cout<<endl;
   }
   cout<<endl;
   cout<<"6次魔方陣作成"<<endl;
   int w;
   for(i=0;i<3;i++){
     w=*(m+6*i+i);
     *(m+6*i+i)=*(m+6*(5-i)+(5-i));
     *(m+6*(5-i)+(5-i))=w;
   }
   for(i=0;i<3;i++){
     w=*(m+6*i+(5-i));
     *(m+6*i+(5-i))=*(m+6*(5-i)+i);
     *(m+6*(5-i)+i)=w;
   }
   for(i=0;i<3;i++){
     w=*(m+6*((i+2)%3)+i);
     *(m+6*((i+2)%3)+i)=*(m+6*(5-((i+2)%3))+i);
     *(m+6*(5-((i+2)%3))+i)=w;
   }
   for(i=0;i<3;i++){
     w=*(m+6*i+(i+2)%3);
     *(m+6*i+(i+2)%3)=*(m+6*i+5-(i+2)%3);
     *(m+6*i+5-(i+2)%3)=w;
   }
   for(i=0;i<6;i++){
     for(j=0;j<6;j++){
       if(*(m+6*i+j)<10)cout<<"0"<<*(m+6*i+j)<<" ";
       if(*(m+6*i+j)>=10)cout<<*(m+6*i+j)<<" ";
     }
     cout<<endl;
   }
   cout<<endl;
}
コンソール画面
入門

1次元配列による6次魔方陣作成プログラム
#include<iostream>
using namespace std;
using namespace System;
void f();
int main(){
   f();
}
void f(){
   int m[56],i,j;
   for(i=0;i<6;i++){
     for(j=0;j<6;j++){
       m[6*i+j]=6*i+j+1;
       if(m[6*i+j]<10)cout<<"0"<<m[6*i+j]<<" ";
       if(m[6*i+j]>=10)cout<<m[6*i+j]<<" ";
     }
     cout<<endl;
   }
   cout<<endl;
   cout<<"6次魔方陣作成"<<endl;
   int w;
   for(i=0;i<3;i++){
     w=m[6*i+i];
     m[6*i+i]=m[6*(5-i)+(5-i)];
     m[6*(5-i)+(5-i)]=w;
   }
   for(i=0;i<3;i++){
     w=m[6*i+(5-i)];
     m[6*i+(5-i)]=m[6*(5-i)+i];
     m[6*(5-i)+i]=w;
   }
  for(i=0;i<3;i++){
     w=m[6*((i+2)%3)+i];
     m[6*((i+2)%3)+i]=m[6*(5-((i+2)%3))+i];
     m[6*(5-((i+2)%3))+i]=w;
   }
   for(i=0;i<3;i++){
     w=m[6*i+(i+2)%3];
     m[6*i+(i+2)%3]=m[6*i+5-(i+2)%3];
     m[6*i+5-(i+2)%3]=w;
   }
   for(i=0;i<6;i++){
     for(j=0;j<6;j++){
       if(m[6*i+j]<10)cout<<"0"<<m[6*i+j]<<" ";
       if(m[6*i+j]>=10)cout<<m[6*i+j]<<" ";
     }
     cout<<endl;
   }
   cout<<endl;
}

コンソール画面
入門


第6話へ 第10講第1話へ


戻る


VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)