2011-12-26 11 views
0

私は直線からなる2次元図を持っています。C++ double型の変数は、常に値を-9,25596e + 061に変更します。

図形の辺はdouble型の座標を持ちます。座標値はDotというオブジェクトに格納されます。

Lineと呼ばれるオブジェクトには、行(昇順または降順の行、 "a * X + b == Y"の "a"および "b"の値など)に関するデータが格納されます。 Lineクラスには、各行の両端の2つのDotオブジェクトもあります。 Lineクラスには、2つの関数/メソッドと1つのコンストラクタもあります。コンストラクタには引数はありません。最初の関数/メソッドには引数はなく、2番目の関数/メソッドには引数がありません。両方の関数/メソッドは、必要なときに自動的にすべてのデータを変更するために作成されます。

私がプログラムを開始した後、図の辺の数と辺の座標を挿入します。その後、プログラムはすべての行についてすべて画面上に書き込む必要があります。どの座標を挿入しても、最初のドットの座標はX = -9,25596e + 061、Y = -9,25596e + 061です。しかし、他の点には、私が最初に挿入した座標があります。

図の辺の数だけ、ベクトルに1行追加します。その後、(実行中のプログラムに値を挿入することによって)図の端の座標の値を変更し始めます。 3番目のアクションは、関数を呼び出すことです。メソッドを呼び出すと、行を "作成"します(行に関する残りのデータが計算されます)。プログラムの4番目のステップは、すべての行についてのデータを画面に書き込むことです。

私はアルゴリズムとコードの問題を探していました。私は何も発見していない。

私はVisual C++ 2010 Expressを使用しています。私はiostreamとベクトルライブラリも使用しています。

なぜ最初のエッジのX座標とY座標は、値を-9,25596e + 061に変更するのですか?

+11

私たちが見ることのできるコードはありますか? – Mysticial

+2

いくつかのコードを投稿してください... –

+5

これは、Visual Studioでプロジェクトのデバッグビルドで発生する可能性のある魔​​法の価値です。それはあなたに行くように意図されています!ここに間違った何か、キアヌ様式。その倍精度浮動小数点値の下位16進値は0xccccccccccccccccです。ローカル変数がデバッグビルドで初期化される値。修正する変数を初期化します。 –

答えて

1

問題はコード内にあるようです。私は正しく初期化していない...問題を解決するために2つの変数の場所を入れ替えなければならなかった。 Hans PassantとBaltramのおかげで、私は問題を探す場所を見つけました。どのタイプの配列からでも要素を呼び出すことができます。

このようなことをするときは常に慎重にしてください。

1

プログラマ電卓を使用して0xcccccc ...を入れて、それを10進数(10進数)に変換すると、似たようなものになります。これは、常に、メモリ内に初期化されていない値があることを意味します。 ビジュアルスタジオのメモリウィンドウまたはデバッガで、ウォッチウィンドウを右クリックし、ポップアップメニューでメモリの16進値を表示するオプションを選択できます。ときどき私がクラッシュをデバッグしているとき、私は生の浮動小数点データを調べるためにそれを行います。

+0

"プログラマーの電卓を使って0xcccccc ...を入れて、10進数(10進数)に変換すると、それは似たようなものになります。いいえ。IEEE 754倍精度形式に変換する必要があります。「10進数」ではありません。 –

関連する問題