順列生成コード。

 えー、メモリが壊れOSが起動しなくなり、

なおすことに専念したくなり勉強にも集中できない感じですはい。

 いまは別マシン使ってます。



 学校の課題でこんなものが出題されました。

  数の並び「123456789」について、数と数の間に、任意に「+」「-」
を入れて、式の値が「100」になるものをすべて見つけなさい――


 個人的にかなり難しいです。

友人のアルゴリズムが良い感じなので紹介すると、

  すべての数の間(8ヶ所)に「つなげる」「左右を足す」「引く」を
  あらわす数字を入れる

というものです。


 順列を生成できればいけるらしいので、

生成コードを書いてみました。  http://codepad.org/HHH5fH5t

 と言ってもこれでは解けないことに気づきました・・・w

 配列内に同じ数があるとループが止まらないという。。


 ここまでいけたなら、なおすとこは少ないと思うんですが、

1日をこのコードのために使ってしまいました・・・w


 テスト勉強をしないといけないのです。。

物理やばいです。落とす可能性大です。


 明日のために今日は休むとします。



 ではまたテスト明けに。

単方向リスト構造。

 こないだの不具合は直りました。

ほんとは不具合でもなんでもないんですけどね・・・w ただの勘違いです。


 getche()関数は、なんでも一文字の入力が行われたら

終了するようです。Enterキーが押されるまでgetche()は

終了しないものだと思ってましたw



 放送中、リスナーさんが問題を作ってくれました。


 練習問題1.入力された文字をリスト「先頭」に追加するプログラムを作成しましょ――

 
今回は文字列の場合も考えなくてはいけなかったのですが、

さっきまでやってたやつを、手直しすればすぐ終わるじゃん。

なんて思ってたら、そうはいきませんでした・・・。


というか、簡単なミスをいくつかしていてつまづいていた

なんていう感じで恥ずかしいです・・・w


 配列(a)から配列(b)へ、中身をまるごとコピーしようとして、

b = a;

みたいに書いてたなんてなんという初心者・・・w←


 こんな感じですが、ひとつだけ重大なバグが残ってるので、

明日にでも取り除きたいです。



 あっ、そのうちEuler再開します。


 では。

単方向リスト構造。

 神経衰弱が完成してから、C言語の勉強のつづきをしてました。

今日からリスト構造について勉強しています。


 構造体・ポインタくらいまで終わってからは、

C言語入門(http://goo.gl/T6fxB)さんを参考にさせてもらってます。

ここはC言語を深く勉強するのにいいところではないかと思ってます。


サンプルコードが置いてあったり、

練習問題が解答付きで置いてあるのは嬉しいですね。


 リスト構造が、コーディングするとどんなもんなのかよく

わからないので、とりあえず書いてみました。  http://goo.gl/T6fxB


 関数のプロトタイプ宣言をした時、宣言した数に驚きましたw

20110124002905

関数を15個使うプログラムなんて組んだことがないので・・・w


 400行書きました。正直多いです。行数が。

実行してみると、入力待ち。とりあえず英字を入力してEnterキーを押す。

本来なら、数字が入力されるまでに入力された英字を全て記憶しておいて

数字が入力された瞬間に、英字が表示されるはずなんですが(コーディング中に思った)。、

英字を1つ入力したらプログラムが終了するなど、

意図しない動作をするんですよ。。


 入力ミスという指摘を頂いたので、もっかいコードを見直してみようとおもいます。

400行のデバッグはホントはつらいし、面倒なんですけどね・・・w  http://codepad.org/fzhn6sgi


 では、今日はこれで。