0

私は、B。Stoustrupの本、「プログラミング-C ++を使用した原則と実践」、第8章の演習8と9を解こうとしています。

演習8randint()では、範囲内のランダムな整数を生成するという名前の関数を記述します[0;MAXINT]。MAXINTは何であると思われますか?intに格納できる数を増やすことはできますか?関数への引数ですか?著者はそれを述べていません。与えられた唯一のヒントは、「The Art of Programming、Knuth、vol.2」です。その本は、 4つのパラメーターを含む線形合同法と呼ばれるアルゴリズムについて説明しています(リンクされたウィキペディアの記事を参照)。

演習9では、randint(int a, int b)演習8の関数を使用して、範囲内のランダムな整数を生成します[a;b]

これで、4つの引数を使用して、線形合同法を実装する単一の関数を作成できましたが、それは作成者が望んでいることではありません。私は彼が何を望んでいるのかを理解しようとしていて、誰かがこれらの演習を解決したかどうか疑問に思っています。残念ながら、作者のWebサイトにはこれらの演習に対する解決策はありません。

あなたの提案をありがとう。

4

1 に答える 1

2

標準のC++には。と呼ばれるものはありませんMAXINT

(Cで)INT_MAXで定義されたマクロがあります。値が型の最大値である定数式に展開されます。たとえば、が32ビットの場合、はおそらくです。<climits><limits.h>intintINT_MAX2147483647

本の別の場所で説明されているかMAXINT(演習の前の索引や数ページを確認してください)、エラーであり、Stroustrupが参照することを意図していINT_MAXます。

これがどこMAXINTで定義されているかわからない場合は、おそらく単に置き換えることができますINT_MAX

于 2012-08-03T21:12:43.997 に答える