C言語② 様々なプログラムを組む

前回の「Hello, World!」に引き続き、C言語の他のプログラムを組んでみます。その中でも、個人的にとりわけ引っかかる部分が多かったものや印象に残ったものを抜粋して掲載します。

 

閏年の判定

webkaru.net

こちらを参考に閏年の判定をするためのプログラムを組んで行きます。その前にそもそも閏年って4年に1回あるあれだっけ・・・?と考えたのですが、このページにもあるように初っ端から間違いでした。参考ページの作者さん曰く

1.西暦が「4」で割り切れる(あまりが0)年は閏年

2.西暦が「100」で割り切れる年は閏年ではない

3.西暦が「400」で割り切れる年は閏年

 

ということなので、こちらを前提にプログラムを組みます。まずはAtomで「leap.c」というファイルを作ります。

f:id:shika16:20161122062755j:plain

 

ということで、コマンドプロンプトを開いてプログラムを実行しようと試みるのですが・・・日本語が文字化けして出て来まいました。というのも、

f:id:shika16:20161122062828j:plain

 

この画像の通り、デフォルトの文字コードが932(Shift-JIS)に設定されているため別の文字コード(今回で言えばAtomの方をデフォルトでUTF-8に設定していた)で書かれたプログラムを実行すると日本語が文字化けしてしまいます。ということで、Atomの方で文字コードをShit-JISに変更します。

f:id:shika16:20161122063105j:plain

 

改めて、実行してみます。

f:id:shika16:20161122063123j:plain

 

無事、文字化けせずにプログラムを実行することができました。プログラム自体の入れ子構造も苦手なので躓くところではありましたが、昔から何かと「文字化け」に悩まされることが多いためそこは気を付けていきたいなと思う所存です。

 

②入力した3辺の長さから三角形の種類を判別

webkaru.net

こちらを参考に、3辺の長さから三角形の種類を判別するためのプログラムを組んでいきます。三角形ABCの3辺はa,b,cと仮定し、「triangle.c」というファイルを作ります。

f:id:shika16:20161122065304j:plain

 

これをコマンドプロンプトで実行します。

f:id:shika16:20161122065327j:plain

 

無事実行できました。(2回目、本当は「二等辺三角形」を出させるつもりだったんですが深く考えずに数字を入力したら早くも三角形を作れなくなってしまいました。)

最初にタイトルを見た時は複雑なプログラムになるんじゃないかと思考を巡らせていたのですが、思っていたよりはシンプルな作りのプログラムでした。相変わらず入れ子構造は苦手ですが・・・

 

③サイコロを作る

こちらを参考に、サイコロを作るプログラムを組みます。まずはAtomで、「dice.c」というファイルを作ります。

f:id:shika16:20161122070524j:plain

 

こちらをコマンドプロンプトで実行します。

f:id:shika16:20161122070543j:plain

 

無事実行できました。こちらも、先ほどの三角形判別プログラムより格段にすっきりとしたプログラムになりました。しかし、乱数に苦手意識をもっているため少し時間がかかってしまいました。苦手意識が強いだけに理解が浅くなっているなという感じです・・・

 

以上、3つのプログラムを取り上げました。元々数学が大の苦手なため敢えて数学に関わると言いますか、少し頭を使うようなプログラムをピックアップしました。やはり思った以上に時間がかかってしまいました・・・もう少し全体的に理解を深められたら、と思います。また、文字化けのような問題にもこれからは素早く対処できるよう心掛けていきたいと思います。

 

参考

 

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

 

 

webkaru.net