-
ポリゴンの領域を見つけるための三角測量を回避するスリッカーアルゴリズムを実装するC++プログラム
これは、ポリゴンの領域を見つけるための三角測量を回避するスリッカーアルゴリズムを使用してポリゴンの領域を見つけるためのC++プログラムです。 これは、正のyが上を指すという通常の数学的慣習を前提としています。正のyが下向きであるコンピュータシステムでは、「正のy下」座標を使用して、頂点を反時計回りにリストするのが最も簡単な方法です。その後、2つの効果がキャンセルされ、ポジティブな領域が生まれました。 関数と擬似コード アルゴリズム Begin function Area() is used to calculate area of a polygon take th
-
2本の線が交差するかどうかをテストするために上記のプリミティブの下で使用するC++プログラム
これは、2本の線が交差するかどうかをテストするために上記のプリミティブの下で使用するC++プログラムです。線が線分と交差するかどうかをテストするために使用できます。これは、セグメントの一方の端点が線の左側にあり、もう一方の端点が右側にある場合にのみ行われます。 アルゴリズム Begin For generating equation of the first line, generate random numbers for coefficient of x and y by using rand at every time of compilation.  
-
点dが平面内の点a、b、cで定義された円の内側または外側にあるかどうかを確認するC++プログラム
方程式を使用して、点dが平面内の点a、b、cによって定義される円の内側または外側にあるかどうかを確認するC++プログラムを検討します s = (x-xt)^2 + (y-yt)^2 – r*r ここで、平面上の任意の点t(xt、yt)について、3つの点(x1、y1)、(x2、y2)、(x3、y3)で定義される円に対するその位置。 s <0の場合、tは円の内側にあります。 0の場合、tは円の外側にあります。 s =0の場合、tは円上にあります。 アルゴリズム Begin Take the points at input. D
-
二次元でギフト包装アルゴリズムを実装するためのC++プログラム
ギフト包装アルゴリズムを2次元で実装するC++プログラムを開発します。ギフト包装アルゴリズムは、特定の点のセットの凸包を計算するためのアルゴリズムです。 アルゴリズム Begin function convexHull() to find convex hull of a set of n points: There must be at least three points. Initialize the result. Find the leftmost point. &n
-
C++での名前空間とクラスの違い
このセクションでは、C++の名前空間とクラスの違いを確認します。名前空間とクラスは2つの異なる概念です。クラスはデータ型です。クラスは基本的に構造の拡張バージョンです。クラスにはデータメンバーと関数をメンバーとして含めることができますが、名前空間には変数と関数を1つにグループ化することで含めることができます。 名前空間をオブジェクトとして作成することはできません。この概念は、類似の関数、クラス、変数などを区別するための追加情報として使用されます。変数、同じ名前の関数は、異なる名前空間に配置できます。 ここで、名前空間とクラスのいくつかの重要な違いを指摘しましょう。 名前空間は、衝突し
-
C++でのstd::vectorとstd::arrayの違い
ベクトルと配列の違いは次のとおりです- Vectorは、インデックスベースではなく要素を格納するためのシーケンシャルコンテナです。 配列は、同じタイプの要素の固定サイズの順次コレクションを格納し、インデックスベースです。 ベクトルは本質的に動的であるため、要素を挿入するとサイズが大きくなります。 アレイは固定サイズであるため、一度初期化するとサイズを変更できません。 ベクターはより多くのメモリを占有します。 配列はメモリ効率の高いデータ構造です。 ベクターは要素へのアクセスに時間がかかります。 要素は連続したメモリ割り当てに配置されるため、場所に関係なく一定時間で要素にアクセスできます。
-
C++の配列クラス
C ++の配列クラスは十分に効率的であり、独自のサイズも認識しています。 配列の操作を実行するために使用される関数は size()=配列のサイズを返す、つまり配列の要素数を返します。 max_size()=配列の要素の最大数を返します。 get()、at()、operator[]=配列要素へのアクセスを取得します。 front()=配列のfront要素を返します。 back()=配列の最後の要素を返します。 empty()=配列サイズがtrueの場合はtrueを返し、それ以外の場合はfalseを返します。 fill()=配列全体を特定の値で埋めます。 swap()=ある配列の
-
特定のプレフィックス式の式ツリーを構築するC++プログラム
式ツリーは基本的に、式を表すために使用される二分木です。式ツリーでは、内部ノードは演算子に対応し、各リーフノードはオペランドに対応します。これは、インオーダー、プレオーダー、ポストオーダートラバーサルでプレフィックス式の式ツリーを構築するC++プログラムです。 アルゴリズム Begin class ExpressionTree which has following functions: function push() to push nodes into the tree: If stack is null &nb
-
C ++でループ、再帰、またはgotoを使用せずに、文字をn回印刷します
このセクションでは、C++でループや再帰を使用せずに文字をn回印刷する方法を説明します。この問題は、文字列クラスのコンストラクターを使用して解決できます。複数回印刷される文字と、それが印刷される回数を取得するコンストラクターがあります。 サンプルコード #include <iostream> using namespace std; void print_char_n_times(char my_char, int count) { cout << string(count, my_char) << endl; } int main
-
C++を使用してデータ型の範囲を計算する
C ++には、int、char、doubleなどのさまざまなデータ型があります。このセクションでは、プログラムでそれらのサイズを取得する方法を説明します。 データ型のサイズはバイト単位で取得できるため、データ型を8に乗算するだけで、ビット単位の値を取得できます。これで、ビット数がnの場合、最小範囲は– 2 ^(n-1)になり、符号付き数値の最大範囲は2 ^(n-1)–1になります。符号なしの数値の場合、負の数がないため、2 ^ n –1になります。 サンプルコード #include <iostream> #include <cmath> #define SIZE(x)
-
C++でstd::endlの使用を避けるべき理由
このセクションでは、コンソールまたはファイルに行を出力するときにstd::endlを回避する必要がある理由を説明します。現在の行の後に改行を作成するためにstd::endlを使用します。数行のIO操作では、問題は発生していません。ただし、大量のIOタスクの場合、パフォーマンスが低下します。 endlは新しい行を作成するために使用されますが、新しい行にのみ送信されるのではなく、カーソルを次の行に送信した後、毎回バッファをフラッシュします。 バッファーのフラッシュはプログラマーの仕事ではありません。オペレーティングシステムがその責任を負います。フラッシュを要求するたびに、オペレーティングシステ
-
fork()は、C ++でwait()を使用してプロセスを下から上に実行します
fork()システムコールは、プロセスを2つのプロセスに分割するために使用されることがわかっています。関数fork()が0を返す場合、それは子プロセスであり、そうでない場合は親プロセスです。 この例では、プロセスを4回分割し、ボトムアップ方式で使用する方法を説明します。したがって、最初はfork()関数を2回使用します。したがって、子プロセスを生成し、次のフォークから別の子を生成します。その後、内側のフォークから自動的にそれらの孫が生成されます。 wait()関数を使用して遅延を生成し、ボトムアップ方式でプロセスを実行します。 サンプルコード #include <iostream&g
-
C++のreference_wrapper
C ++では、reference_wrapperは、タイプTのコピー構成可能およびコピー割り当て可能オブジェクトで参照をラップするのに役立つクラステンプレートです。std::reference_wrapperのインスタンスは基本的にオブジェクトですが、T&に変換できます。したがって、参照によって基になる型をとる関数の引数として使用できます。 サンプルコード #include <iostream> #include <functional> using namespace std; int main () { char a = 'h
-
中空のピラミッドとダイヤモンドのパターンをC++で印刷するプログラム
ここでは、C++を使用して中空のピラミッドとダイヤモンドのパターンを生成する方法を説明します。ソリッドピラミッドパターンを非常に簡単に生成できます。中空にするには、いくつかのトリックを追加する必要があります。 中空ピラミッド 最初の行のピラミッドには1つの星が印刷され、最後の行にはn個の星が印刷されます。他の行の場合、行の開始と終了に正確に2つの星が印刷され、これら2つの開始の間に空白があります。 サンプルコード #include <iostream> using namespace std; int main() { int n, i, j; &nbs
-
C ++でfork()を使用した親プロセスと子プロセスでの計算
このセクションでは、fork()を使用してC++で子プロセスを作成する方法を説明します。また、各プロセスに対していくつかの計算を行います。したがって、親プロセスでは配列のすべての偶数の合計を見つけ、子プロセスでは配列要素から奇数の合計を数えます。 fork()が呼び出されると、値が返されます。値が0より大きい場合、現在は親プロセスにあり、そうでない場合は子プロセスにあります。したがって、これを使用して、プロセスを区別できます。 サンプルコード #include <iostream> #include <unistd.h> using namespace std; in
-
C ++のRTTI(実行時型情報)
このセクションでは、C ++のRTTI(実行時型情報)とは何かを説明します。 C ++では、RTTIはメカニズムであり、実行時にオブジェクトのデータ型に関する情報を公開します。この機能は、クラスに少なくとも1つの仮想関数がある場合にのみ使用できます。これにより、プログラムの実行時にオブジェクトのタイプを判別できます。 次の例では、最初のコードは機能しません。 「(Base *型の)dynamic_castbase_ptrを「classDerived*」と入力することはできません(ソース型はポリモーフィックではありません)」のようなエラーが生成されます。このエラーは、この例には仮想関数がないた
-
C++のChronoライブラリ
このセクションでは、C++のChronoライブラリとは何かを説明します。このChronoライブラリは、日付と時刻に使用されます。タイマーと時計はシステムによって異なります。したがって、精度よりも時間を改善したい場合は、このライブラリを使用できます。 このライブラリでは、期間と時点を分離することにより、精度に中立な概念を提供します。 期間オブジェクトは、分、2時間、または10分のようなカウントによって期間を表すために使用されます。たとえば、30秒は、1秒単位の30ティックで構成される期間で表されます。 サンプルコード #include <iostream> #include &l
-
C++で例外はどのように機能しますか
C ++では、例外処理はランタイムエラーを処理するプロセスです。例外は、C++で実行時にスローされるイベントです。すべての例外は、std::exceptionクラスから派生します。処理可能なランタイムエラーです。例外を処理しない場合は、例外メッセージを出力してプログラムを終了します。 例外は、C ++標準では、プログラム内で使用できるクラスとして定義されています。親子クラス階層の配置を以下に示します- C++の一般的な例外クラスは-です。 Sr.No。 例外と説明 1 std ::exception これは、すべての標準C++例外の例外および親クラスです。
-
配列内の反転をカウントするC++プログラム
カウント反転とは、配列をソートするために必要なスイッチの数を意味します。配列がソートされている場合、反転カウント=0。反転カウント=配列が逆の順序でソートされた場合の最大値。 配列内の反転をカウントするC++プログラムを開発しましょう。 アルゴリズム Begin Function CountInversionArray has arguments a[], n = number of elements. initialize counter c := 0 for i in range 0 to n-1, do &n
-
リンクリストを使用して二分探索木を実装するC++プログラム
これは、リンクリストを使用してバイナリ検索ツリーを実装するためのC++プログラムです。 関数と疑似コード アルゴリズム Beginツリーのノードを入力として受け取ります。データd、左ポインターl、および右rを入力として受け取る構造体nodを作成します。ツリーにノードを挿入する関数create()を作成します。ノードの数としてc=0を初期化します。 c <6までwhileループを実行します:ルートを入力します。ノードの値を入力します。ルートより大きい場合は右として入力し、そうでない場合は左として入力します。関数inorder()を作成して、ノードを次のように順番にトラバースします。左–ルート–右