メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.452) 割り算デバッグ  2004/05/24


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第452回 割り算デバッグ
 発行    2004年5月24日(月曜日)
 発行数   約2900

 あかん、発行数が下がり続けるよ〜”

{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンはまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・このメールマガジンは、横60文字で作成しています。
 また、インデントはすべて半角スペース4つで構成しています。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、まぐまぐさんのホームページでお願いします。
・まぐまぐさんのバックナンバー(下欄参照)を活用して下さい。
・ここは私の復習の場です。内容は約1ヶ月内外に私が勉強した
 内容になっています。最新の技術があれば、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。
・セキュリティ突破のため、暗号化された単語があります。

/*========================================================*/
 ご挨拶
/*========================================================*/

 こんにちは。あゆしゃです。

 先日、といっても昔のことではなく本当に最近なのですが、FBを
やっていたとき、

「すばやさアルゴリズムは、どうなっているのだろう?」

 と、疑問に思いました。さっそくグーグルで、

 「フfァaントムブレイブ+アルゴリズム」で検索しても、それら
しいものは良くわかりませんでした。

 他のキーワードでも、良くわかりませんでした。

/*========================================================*/

 すばやさが90,80,30のとき、行動回数は9:8:3に
なって欲しいところが人情という感じでしょう。

/*========================================================*/

 一番簡単そうなのは、最小公倍数を使う方法でしょうか。

 つまり、すべての参加キャラの最小公倍数を求め、誰か1人が
その値を超えるまで、自分たちのすばやさを加算していき、上回っ
たら、そいつが動いて、すばやさの現在値を0にリセット。

 という感じでいいような気がしますが、最小公倍数なんて、INT
の32ビットを簡単に超えてしまうので、少し無理でしょうか。

 足し算のみとはいえ、ループの回数が多そうですし、。。。、
これはだめかなぁ?

 うーん、困った。

{magclick}
/*========================================================*/
 今回のお題  << 割り算デバッグ >>
/*========================================================*/

 前回までで、大型計算機は足し算と引き算を行えるようになり
ました。

 掛け算もできるようですが、桁数が大きいと答えが違うので、
その辺りを見ていきましょう。。。

/*========================================================*/

 と、思ったのですが、掛け算も正しいようです。

 どうも、足し算のデバッグ中に、直してしまったようです。

 つまり、toString の部分で、「16倍がおかしい、256倍で
すよ」といって直したところが、犯人でした。

 桁数が少ない場合は問題なかったのですが、桁数が多いと、これ
が悪さをする、というからくりでした。

/*========================================================*/

 というわけで今回は予定を進めて、割り算に行ってみましょう。

 割り算、死ぬほど変な結果を返してきます。いったい、何が悪い
のでしょうか?

/*========================================================*/

 少し調べてみると、cmp がすごいことをやっていました。

int CXInt::cmp( CXInt& b )
{
    int c = 0;
    for( int i = SIZE - 1; i >= 0; i++ ) {
        if( c = ( int )m_buff[ i ] - ( int )b.m_buff[ i ] ..
    }
    return c;
}

 おお、++! なんで君は++なんだ?

 ・・・よくあるミスですね。本当に、よくあるミスです私には。

/*========================================================*/

    It's a mistake which is well.
    Really, It's a mistake which is well to me.

 意味:英語でごまかしてみたり。

{magclick}
/*========================================================*/
 さいごに
/*========================================================*/

 はい、クリア〜。

{magclick}
/*========================================================*/
 次回予告
/*========================================================*/

 次回は5月26日(水曜日)に、第453回をお送りします。
 お題は「平方根のデバッグ」

 ついに、平方根です。

 平方根をすると、帰ってこなくなります。

 どうも、単に遅いだけのようです。

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されていますか?
 このメールマガジンの内容に文面の引用はありませんか?
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容の、転用、流用、宣伝、リンク、
はい、クリア〜(リンバラ風) なんて大歓迎です。

{magclick}
/*========================================================*/
 
/*========================================================*/

発行者 あゆしゃ

まぐまぐアイディー
0000020674

まぐまぐバックナンバー
http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674

あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

登録と解除
http://www.mag2.com/m/0000020674.htm

ご意見・ご感想・ご質問メール
mailto:ayusya@flamenco.plala.or.jp

めーらっくす <<過去ログがタイトル別になっています>>
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F

ブラウザの閉じるボタンで閉じてください。