私の拙いプログラム集、というよりもむしろプログラミングの練習の記録。 当分Cで書く予定。
逆ポーランド記法(RPN)入力式の電卓プログラム。 ソースが汚いけど、RPN普及のために早く公開することにした。 通の人に分かるように言うと、私実はHP電卓の愛用者なのです。 RPNやHP電卓については後日詳しく書きますね。
例えば123 + 456 * 789を計算するなら、以下のように入力する。
123 456 789*+
数字の間はスペースやタブ等の、数字と演算子以外の文字で区切り、演算子は数字の後に入力する。 使える演算子は加減乗除(それぞれ+-*/)、剰余(%)等8種。 入力された式は清書されて表示される。 X、Y、ZおよびTの4つのスタック(Stack)には入力された数字が入り、スタックXに計算結果が表示される。 `Q'または`q'を入力して終了。
2つのテキストファイルの各行を繋いで出力するだけの、
簡単だけど、仕事で例えばデータファイルをまとめるときに使いたくて書いたプログラム。
区切文字はタブ。
ファイル操作は注意点がいくつもあるので初心者には難しい、、
1から10個までの円盤からなるハノイの塔を引越させる方法を表示するCプログラム。
円盤は数字で表示され、数の大きさは円盤の大きさを表しています。
引越の方法の理屈は知っていたが、自分でプログラムを書いて実際に動かしてちょっと感動した。
私が生れて初めて自分で書いた一応実用的と言えるCプログラム。 指定された年月の暦を表示します。
どちらかというとRPN電卓特有の演算子3種を追加。
これに伴いif-else文をswitch-case文で書き換える。
エラーメッセージを標準エラー出力として扱うように変更。
読み込むファイルが存在しないとき 以前は`Can't open..'と標準出力に出していたが、これはおかしい。 `Can't open..'の文句は本来求めているもの(2つのファイルの各行が繋ぎ合わされたもの)ではないからだ。 もしこのメッセージが標準出力として送られると、 場合によってはこの出力を待っているプログラムが本来の出力と見なして異常な処理をするかもしれない。
2番目のファイルが開けないでプログラムが終了すると、1番目のファイルが開いたままになるのを修正(一応できたはず)。
エラーメッセージを標準エラー出力として扱うように変更。
円盤の最大数(10)を`define'を用いて書き換える。
入力メッセージを標準エラー出力として扱うように変更。
入力メッセージで1582年(現在の暦(グレゴリオ暦)が最初に使用された)以降の年を受け付けることを表示。
問題点がたくさん。最も現実的な問題は桁溢れの対策。