マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第2章 変数って何?
第15話 文字型変数の足し算をより高度化しよう!
-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・
第14話への話課題 実行画面が

となるようにコードを付け加えてください。
そのために文字型性格変数a、文字型性格変数b、文字型性格変数c、文字型性格変数dを定義してください。
文字型変数の足し算はパズル的ですが、
ご自分の頭を使って考えてください。
-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・
を実現するコード例(コードはコピペできるように常に全体を記載しています)
#include<iostream>//インクルードファイルiostreamの読み込み
#include<conio.h>//while(!_kbhit());を使うためのお呪い
using namespace std;//coutを使うときに必要なお呪い
#include<conio.h>//while(!_kbhit());を使うためのお呪い
#include<string> //文字列変数を使えるようにするために組み込む
#include <iomanip> //setprecisionを使えるように組み込む
void 挨拶社員();//ぼくは挨拶を行う係です。
void 整数を扱う社員();//ぼくは整数型変数を定義してその変数に整数値を代入する係です。
int 合計計算社員();//ぼくの任務は「1 + 2 + ・・・ + 10」の合計を計算して社長に報告することです。
int 積計算社員();//ぼくの任務は「1 × 2 × ・・・ × 10」の積を計算して社長に報告することです。
void 実数を扱う社員();//ぼくは実数型変数を定義してその変数に実数を代入し、代入された値をコンソール画面に表示する係です。
float 単精度型実数の合計を計算する社員();//ぼくは3つの実数を足して社長に報告する係です。
double 倍精度型実数の合計を計算する社員();//ぼくは4つの倍精度型実数を足して社長に報告する係です。
void 文字型変数を扱う社員();//ぼくは文字型変数を定義して、様々な人の性格をコンソール画面に表示することを任務とする社員です。
int main() {//私は社長だ。 挨拶社員();//ぼくは挨拶を行う係です。 整数を扱う社員();//ぼくは整数型変数を定義してその変数に整数値を代入する係です。
cout << "1 + 2 + ・・・ + 10 = " << 合計計算社員() <<
endl;
//合計計算社員() の報告を基とに 1 + 2 + ・・・ + 10 の計算結果をコンソール画面に表示
cout << "1 × 2 × ・・・ × 10 = " << 積計算社員() <<
endl;
//積計算社員() の報告を基とに 1 × 2 × ・・・ × 10 の計算結果をコンソール画面に表示
cout << 積計算社員() << endl; //積計算社員() の結果をもう一度表示
実数を扱う社員(); //実数型変数に値を入れて表示する社員
cout << "1.2345 + 9.8765 + 3.6789 = "<< 単精度型実数の合計を計算する社員()
<< endl;
//単精度型実数の合計を計算する社員() は実数の合計を計算して社長に報告することを任務とする社員です。
cout << "1.23456789 + 9.87654321 + 2.57913579 + 8.64208642 = " << fixed << setprecision(10) << 倍精度型実数の合計を計算する社員() <<
endl;
//倍精度型実数の合計を計算する社員() は実数の合計を計算して社長に報告することを任務とする社員です。
// ここから文字型変数の世界に入ります
文字型変数を扱う社員();//ぼくは文字型変数を定義して、様々な人の性格をコンソール画面に表示することを任務とする社員です。
while (!_kbhit());//待機させるための命令
return(0);//int main()終わるためのお呪い
}
void 挨拶社員() {//ぼくは挨拶をする係です。
cout << "こんにちは" << endl;//コンソール画面に表示
}
void 整数を扱う社員() {//ぼくは整数を扱う社員です。
int 整数a;//整数aを整数型の変数であると定義します。
int 整数b;//整数bを整数型の変数であると定義します。
整数a = 10;//整数aという箱に10を入れます。
整数b = 20;//整数bという箱に20を入れます。
cout << 整数a << " + " << 整数b << "
= " << 整数a + 整数b << endl;//コンソール画面に整数aの内容を表示
}
int 合計計算社員() {//ぼくの任務は「1 + 2 + ・・・ + 10」の合計を計算して社長に報告することです。
int 合計; 合計 = 0;//和の合計は0から出発
合計 = 合計 + 1;//0に1を加える
合計 = 合計 + 2;//1に2を加える
合計 = 合計 + 3;//3に3を加える
合計 = 合計 + 4;//6に4を加える
合計 = 合計 + 5;//10に5を加える
合計 = 合計 + 6;//15に6を加える
合計 = 合計 + 7;//21に7を加える
合計 = 合計 + 8;//28に8を加える
合計 = 合計 + 9;//36に9を加える
合計 = 合計 + 10;//45に10を加える
return(合計);//合計値を社長に報告
}
int 積計算社員() {//ぼくの任務は「1 × 2 × ・・・ × 10」の積を計算して社長に報告することです。
//暗算の苦手な方は電卓を手元に置いて計算させながら以下をお読みください。
int 積;
積 = 1;//積の計算は1から出発
積 = 積 * 2;//1に2をかける → 2
積 = 積 * 3;//2に3をかける → 6
積 = 積 * 4;//6に4をかける → 24
積 = 積 * 5;//24に5をかける → 120
積 = 積 * 6;//120に6をかける → 720
積 = 積 * 7;//720に7をかける → 5040
積 = 積 * 8;//5040に8をかける → 40320
積 = 積 * 9;//40320に9をかける → 362880
積 = 積 * 10;//362880に10をかける → 3628800
return(積);//積の値を社長に報告
}
void 実数を扱う社員() {//ぼくは実数型変数を定義してその変数に実数を代入し、代入された値をコンソール画面に表示する係です。
float 実数型変数;//実数型変数の定義
実数型変数 = 3.14159;//実数型変数に3.14159を代入=実数型変数という箱に3.14159を入れる
cout << 実数型変数 << endl;//実数型変数という箱に入っている3.14159をコンソール画面に表示
}
float 単精度型実数の合計を計算する社員(){//ぼくは3つの実数を足して社長に報告する係です。
float 単精度型実数の合計変数;
単精度型実数の合計変数 = 0;//足し算は0から出発
単精度型実数の合計変数 = 単精度型実数の合計変数 + 1.2345;//0に1.2345を加える
単精度型実数の合計変数 = 単精度型実数の合計変数 + 9.8765;//1.2345に9.8765を加える
単精度型実数の合計変数 = 単精度型実数の合計変数 + 3.6789;//1.2345と9.8765の合計値に3.6789を加える
return(単精度型実数の合計変数);//社長に3つの単精度型実数の合計を報告
}
double 倍精度型実数の合計を計算する社員() {//ぼくは4つの倍精度型実数を足して社長に報告する係です。
//暗算が苦手な方は、電卓を手にして以下のコードを読んでください。
double 倍精度型変数;//倍精度型変数を定義しています。
倍精度型変数 = 0;//足し算は0から始まります。
倍精度型変数 = 倍精度型変数 + 1.23456789;
//0に1.23456789を加えます。 → 1.23456789
倍精度型変数 = 倍精度型変数 + 9.87654321 ;
//1.23456789に9.87654321を加えます。 → 11.1111111
倍精度型変数 = 倍精度型変数 + 2.57913579;
//合計値11.1111111に2.57913579を加えます。 → 13.69024689
倍精度型変数 = 倍精度型変数 + 8.64208642;
//合計値13.69024689に8.64208642を加えます。 → 22.33233331
return(倍精度型変数);//社長に4つの倍精度型実数の合計を報告
}
void 文字型変数を扱う社員() {
//ぼくは文字型変数を定義して、様々な人の性格をコンソール画面に表示することを任務とする社員です。
string 文字型人物変数a;//文字型人物変数aの定義
string 文字型人物変数b;//文字型人物変数bの定義
string 文字型人物変数c;//文字型人物変数cの定義
string 文字型人物変数d;//文字型人物変数dの定義
string 文字型名詞変数a;//文字型名詞変数aの定義
string 文字型名詞変数b;//文字型名詞変数bの定義
string 文字型助詞変数;//文字型名詞変数bの定義
string 文字型語尾変数;//文字型名詞変数bの定義
文字型人物変数a = "花子";//文字型人物変数aという箱に"花子"を入れる。
文字型人物変数b = "太郎";//文字型人物変数bという箱に"太郎"を入れる。
文字型人物変数c = "道子";//文字型人物変数cという箱に"道子"を入れる。
文字型人物変数d = "次郎";//文字型人物変数dという箱に"次郎"を入れる。
文字型名詞変数a = "私";//文字型名詞変数aという箱に"私"を入れる。
文字型名詞変数b = "僕";//文字型名詞変数bという箱に"僕"を入れる。
文字型助詞変数 = "は";//文字型助詞変数という箱に"は"を入れる。
文字型語尾変数 = "です。";
string 文字型性格変数a;//文字型名詞変数bの定義
string 文字型性格変数b;//文字型名詞変数bの定義
string 文字型性格変数c;//文字型名詞変数bの定義
string 文字型性格変数d;//文字型名詞変数bの定義
cout << 文字型名詞変数a + 文字型助詞変数 + 文字型人物変数a + 文字型語尾変数 << endl;
cout << 文字型名詞変数b + 文字型助詞変数 + 文字型人物変数b + 文字型語尾変数 << endl;
cout << 文字型名詞変数a + 文字型助詞変数 + 文字型人物変数c + 文字型語尾変数 << endl;
cout << 文字型名詞変数b + 文字型助詞変数 + 文字型人物変数d + 文字型語尾変数 << endl;
}
結構パズル的要素があって、頭を使ったのではないでしょうか。
ですが、最終章の推薦書自動生成ソフトはもっと複雑なパズルへの挑戦となります。
前話でも言いましたが、そのプログラムをご自分で工夫されて自分の職種に適した推薦自動生成ソフトに改良してください。
高度なパズルになって頭の体操になります。
そして、同僚たちに自慢するとともにソフトの開発の仕方を教えてやってください。
その際に私のサイトの紹介も忘れずにお願いします。
私も笑顔、あなたも笑顔でWin、Winです。
さて、以上をもって第2章は終了します。
一応今後の予定を書いておきます。
第3章 for文
第4章 if文(魔方陣ミニ版自動生成にも挑戦!)
第5章 配列
第6章 関数
(この章で関数とは意味の分からないものではなく、大変興味深いものであることがわかります。
現代哲学の有力な一分野である分析哲学は、この世界は関数関係でできていると主張してます。
関数が苦手だった人はこの章を勉強すると苦手意識を克服することができます。)
第7章 ポインタ
(メモリのアドレス(住所)を扱うことのできる特別な変数=配列としても使えるもの、
C言語やC++が際立って面白いのはこれがあるからです。)
第8章 関数の再帰的使用
第9章 巨大魔方陣自動生成ソフト開発への挑戦!
第10章 数独自動生成ソフト開発への挑戦!
第11章=最終章 卒業研究=推薦書自動生成ソフト開発へのあくなき挑戦!
ただし、私はかなり気まぐれな性格なので予定が大幅に変わる可能性もあります。
第2章第14話へ 第3章第1話へ
本講義トップへ