第14講 ベクタを利用して6次魔方陣を作ろう!
第1話 自然配列の作成と表示
自然配列と合計を含む表示
を実現するプログラム例
#include<iostream>
#include<vector>
using namespace std;
void f(vector<vector<int>>::iterator m);
void h(vector<vector<int>>::iterator m);
void g(vector<vector<int>>::iterator m);
void main(){
vector<vector<int>> m(6);
for(int i=0;i<6;i++)m[i].resize(6);
cout<<"自然配列"<<endl;
f(m.begin()); //自然配列作成
h(m.begin()); //自然配列表示
}
void f(vector<vector<int>>::iterator m){
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
m[i][j]=6*i+j+1;
}
}
}
void h(vector<vector<int>>::iterator m){
int i,j,w;
w=0;
for(i=0;i<6;i++){
w=w+m[5-i][i];
}
cout<<" "<<w<<endl; //間隔はご自分で試行錯誤して下さい。
for(i=0;i<6;i++){
for(j=0;j<6;j++){
if(j==0)cout<<" ";
if(m[i][j]<10)cout<<"0"<<m[i][j]<<"
"; else cout<<m[i][j]<<" ";
}
cout<<" ";
w=0;
for(j=0;j<6;j++)w=w+m[i][j];
if(w<100)cout<<" "<<w<<endl; else cout<<w<<endl;
}
w=0;
for(i=0;i<6;i++){
w=w+m[i][i];
}
cout<<" "<<w<<endl; //間隔はご自分で試行錯誤して下さい。
for(i=0;i<6;i++){
w=0;
for(j=0;j<6;j++){
w=w+m[j][i];
}
if(w<100)cout<<" "<<w<<" ";
else cout<<w<<" ";
}
cout<<endl;
}
void g(vector<vector<int>>::iterator m){ //後で内容を埋める
}
このプログラミングで最も難しい点は、
数字の位置の調整です。
cout<<" "<<w<<endl; //間隔はご自分で試行錯誤して下さい。
間のスペースはブラウザによって異なって表示されますので、
皆さんがご自分で調整して下さい。
文字数を計算すれば、近い線は行きますが、
実際にはずれたりしています。
位置調整は、何度も粘り強く試行錯誤するしかないと思います。
第2話への課題です。
現在空欄になっている
void g(vector<vector<int>>::iterator m){ //後で内容を埋める
}
の中身を埋めて、対角線部分の交換が出来るようにして、
実行結果が
となるようにして下さい。
第13講第10話へ 第2話へ
eclipse c++ 入門講義第1部へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ