0

直線で作った2Dフィギュアがあります。

図のエッジには、double型の座標があります。座標の値は、Dotというオブジェクトに格納されます。

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

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

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

私はアルゴリズムとコードの問題を探していました。何も見つかりませんでした。

Visual C ++2010Expressを使用しています。また、iostreamライブラリとvectorライブラリを使用しています。

では、なぜ最初のエッジのX座標とY座標の値が-9,25596e+061に変わるのでしょうか。

4

2 に答える 2

1

OK、問題はコードにあるように見えました。私は正しく初期化していない...問題を修正するために2つの変数の場所を交換する必要がありました。Hans PassantとBaltramのおかげで、問題を検索する場所を見つけました。任意のタイプの配列から要素を呼び出すときです。

ええ、そのようなことをするときは常に注意してください。

于 2011-12-27T12:24:04.387 に答える
1

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

于 2011-12-27T12:30:11.960 に答える