|
/*========================================================*/ <<<あゆしゃの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 |