-
著者:
-
005:クラスを教えます
プロジェクト | コンテンツ |
---|---|
この作品は、コースに属し | 春2020コンピュータソフトウェア工学研究所(ロジャー・レン建) |
どこの仕事でこの要件 | 個々のプロジェクトの作業 |
このコースでの私の目標です | 知識の学習ソフトウェアエンジニアリング、トレーニングエンジニアリングと開発能力を開発 |
仕事具体的な側面は、私は目標を達成するのを助けます | PSPは、マスター基本的な実用的な操作によって開発されました |
PSP2.1 | パーソナルソフトウェアプロセス段階 | 推定時間がかかる(分) | 実際の時間がかかる(分) |
---|---|---|---|
プランニング | 計画 | 10 | 10 |
・見積り | •このタスクが必要と推定どのくらいの時間 | 10 | 10 |
開発 | 開発 | 280 | 520 |
・分析 | (新しい技術を学ぶ含む)・ニーズ分析 | 30 | 40 |
・デザインスペック | 設計ドキュメントの生成 | 30 | 40 |
・デザインレビュー | ・デザインレビュー(と彼の同僚は、設計文書を見直し) | 10 | 20 |
・コーディング標準 | ・コードの仕様(現在の開発のための適切な規範の開発) | 10 | 20 |
・ 設計 | ・具体的な設計 | 60 | 100 |
・コーディング | ・具体的なコーディング | 60 | 120 |
・コードレビュー | ・コードレビュー | 20 | 60 |
・テスト | ・テスト(セルフテスト、コードを変更し、変更を提出) | 60 | 120 |
報告 | レポート | 70 | 70 |
・ 試験報告書 | ・テストレポート | 40 | 40 |
・サイズ測定 | ・コンピューティングのワークロード | 10 | 10 |
・死後&プロセス改善計画 | ・後知恵、およびプロセス改善計画を提案します | 20 | 20 |
トータル | 360 | 600 |
A. 問題解決のアイデアの説明
インターネット検索
ネットワークの複雑さがより少ない見つけるOよりも(N ^ 2)のアルゴリズムである見つけることを試みるO(nlogn)直線無駄な検索に、線分の交点に関し、
問題解決のためのアイデア
コードを書く前に、彼はそれがラインを読み解決するために暴力を選んだので、アルゴリズムは、良いを見つけることができません、すぐにn個の直線を解くとの交差点の前に、各点について解く重複排除処理する必要があり、ベクトルは同じであっても探していた処理ポイント、複雑度の高いです。
改善します
この構造の、すなわち、水平および垂直座標は、キー値となる、ハッシュ・ストレージを選択するキーを形成する、ポイント組成列の座標を水平および垂直値ポイントがリストのハッシュであり、それは前の書き込みコードは考えています
II。設計の実装
それは比較的単純なC ++コードであるため、意図的にオブジェクト指向の考え方を使用していませんでした
-
クラス:機能(すなわち、プログラム全体体、テストを容易に、ダイレクトコールインターフェイス
-
セット<ノード、CMP>ノード:ハッシュマップのセットのコストよりもはるかに大きいので、代わりにハッシュマップのコードを書くときに使用して設定され、プロセスはよりダブルターンの文字列よりも必要で、コストも素晴らしいです、精度の損失があるかもしれません
-
getLineParaボイド:AX + B = CYの直線的代表を使用してではなく、オリジナルのyを用い= KX + B直線を読み取る際に、最大精度とデータ保持の精度が、この関数が呼び出される分割の使用を低減することです。種にABC、線形構造の値を取得します。
-
readFileの空:この関数は、ファイルの読み取りに使用され、すべてのベクトルオンラインストア< にライン>ラインを
-
L2LIsCross BOOLは:この機能は、そうでない場合は交点が存在せず、直線と直線、すなわち、線形方程式の解は、に格納されたノードは直ちに焦点について解く、最初の交差点があるか否かを判断する線形を解く前に設定され、リターン真の交差点を解決するために使用されていますリターン偽
-
C2LIsCross BOOLは:この関数は直線との交点の円を解決するために使用され、中央の傾き、および所与の垂直中心線を経て得られた所定の線に垂直な中心までの距離の交点によって得られた二本の直線の交点、相は、偽が戻された場合密接に、交差点から決定し、そうでなければ、半円形線断面を乗じ正および負の単位ベクトル所定のラインを得るために、2つの交点の座標を取得することができるメートル、戻り真
-
C2LIsCross BOOL :この関数は、直接呼び出し関数に、直線と円の問題交差点を簡単にするため、二つの円の交点、まず焦点を経て得られた線形方程式を減算円方程式を解くために使用されます
-
INT解決:交点を取得するプロセスを完了するために、上記の関数を呼び出すには、便利なテストインタフェースの数に読み込まれます
-
-
ペア:ノード(typedefのストレージ・ポイントが、しかし対と、構造体を使用しません)
-
構造体:ライン(ライン記憶2点の水平および垂直座標を含む構造、長期保管の使用、及び、B、CのAX + B = CY)
-
構造体:サークル(センタノードと半径rを含むラウンドストレージ構造)
小技:
-
SETを使用し、< ペア>を、二重の文字列をオンにすることなく、ワークロードの量を減らします
-
比較対12小数の精度を保証するためにオーバーライド機能を設定します
ユニットテスト
-
極端なケースを考えると、垂直直線に平行な直線は、円、円に直線接線と交差する直線は、円からの直線と円は、円、円の円、円の接線を含む円と交差します
-
ストレステスト、2000行、テスト
III。性能試験
総CPU時間割り当て、機能は主占有時間ていることがわかります
Set.insert関数は、により必要に、ハッシュマップを使用するコードの最初のバージョンは、このように使用を改善、より一層消費ハッシュマップに挿入するよりも、大きな消費二重列を、有効に最大消費を理解することができる、見ることができますセット、赤、黒の木が保存され、非重複を確保するために、両方の、だけでなく、ペアの挿入方法のセットながら、私は最適化するのに非常に良い方法を持っていない、不要な消費を減らすことができます。
IV。コード説明
コード品質分析チャート
ユニットテスト
達成するための主要な機能
-
線形と円形交差点を解きます
-
グルグルと解決の交差点
-
線形および線形交差を解きます