C++

 Computer >> コンピューター >  >> プログラミング >> C++
  1. C++で学ぶ興味深い時間計算量の問題

    時間計算量(Time Complexity)とは、アルゴリズムが平均的なケースで実行されるまでに必要となる時間として定義できます。ここでは、基本的な関数の時間計算量を実際に見ていきながら、その求め方を解説します。例1:内側のループが i ずつ増加する場合void counter(int n){ for(int i = 0; i < n; i++){ for(int j = 1; j < n; j += i){ cout << i << << j; } cout &

  2. C++で使える意外な配列アクセス記法「index[配列名]」の仕組みを解説

    配列(Array)は、同じデータ型の要素を連続的に格納する線形データ構造です。配列内の個々の要素にアクセスするには、通常、次のような標準的な記法が使われます。 標準的な構文 array_name[index]; コード例 #include <iostream> using namespace std; int main( ){ int arr[2] = {32,65}; printf(First Element = %d\n,arr[0]); printf(Second Element = %d\n,arr[1]); return 0; } 実行結果

  3. C++で対角線の長さから正方形の面積を求める方法

    面積とは面積とは、図形が二次元平面上で占める広がりの大きさを表す量です。正方形とは、4つの辺の長さがすべて等しく、すべての内角が直角(90度)である四角形のことです。対角線とは、多角形において互いに隣り合っていない2つの頂点を結ぶ線分のことです。上図において、ac と bd は正方形 abcd の対角線です。問題の概要本記事では、正方形の対角線の長さが与えられたとき、その正方形の面積を求める方法を解説します。面積公式の導出三角形 abc に着目し、三平方の定理(ピタゴラスの定理)を適用すると、次の関係が成り立ちます。ac2 = bc2 + ab2 d2 = a2 + a2 d = sqrt(2

  4. C++で平行四辺形に内接する三角形の面積を計算する方法

    図形の面積とは、その図形が二次元平面上で占める広さのことです。三角形は、3つの辺を持つ多角形です。平行四辺形は、向かい合う2組の辺がそれぞれ平行で、長さも等しい四角形です。問題の概要このプログラムでは、底辺と高さがわかっている平行四辺形を扱います。この平行四辺形の中には、平行四辺形と同じ底辺を共有する三角形が内接しています。与えられた底辺と高さの値を使って、この三角形の面積を計算することが目的です。三角形の面積の公式平行四辺形の底辺をそのまま使い、平行四辺形と同じ高さを持つ三角形の面積は、次の公式で求められます。面積 = ½ × 底辺(b) × 高さ(h)つまり、面積 = 0.5 × b ×

  5. C++で算術数(約数の平均が整数になる数)を判定する方法

    算術数とは算術数(Arithmetic Number)とは、その数のすべての正の約数の平均(相加平均)が整数になる数のことです。つまり、ある数 n について「約数の総和 ÷ 約数の個数」が割り切れる場合、その n は算術数であると定義されます。具体例で確認してみましょう。入力 : n = 6 出力 : YES 説明 : 約数は 1, 2, 3, 6 約数の総和 = 1 + 2 + 3 + 6 = 12 約数の個数 = 4 約数の総和 ÷ 約数の個数 = 12 / 4 = 3(整数なので算術数)なお、素数 p の場合、約数は 1 と p の2つだけなので平均は (1 + p) / 2 となります

  6. C++で複素数の偏角を求める:arg()関数の使い方を徹底解説

    複素数とは 複素数とは、「a + bi」という形式で表される数値のことです。ここで、a と b は実数であり、i は虚数単位(虚部)を表します。 偏角(argument)とは 偏角とは、正の実軸と複素数が示すベクトルとの間の角度のことを指します。複素数 z = x + iy に対する偏角は、arg(z) と表記されます。 C++では、複素数の偏角を求めるために、<complex> ヘッダーファイルに用意されている arg() 関数を使用します。 構文 arg(complex_number); パラメータ この関数は、偏角を計算したい複素数を引数として受け取ります。 戻り値 この関

  7. C++ STLのarray::at()関数の使い方を徹底解説

    配列(array)とは、同じデータ型の要素を連続したメモリ領域に格納したコレクションです。C++標準ライブラリ(STL)には、配列の操作をサポートするためのさまざまなメソッドが用意されています。その中の一つが array::at() メソッドです。array::at() メソッドは、指定したインデックス位置にある要素への参照を返すために使用されます。構文array::at() 関数の一般的な構文は以下のとおりです。array_name.at(i);パラメータこの関数は引数を1つだけ受け取ります。引数には、アクセスしたい要素のインデックスを指定します。戻り値関数を呼び出す際に渡されたインデックス

  8. 【C++ STL】配列のdata()メソッドの使い方を例付きで解説

    配列とは配列とは、同じデータ型の要素を連続したメモリ領域に格納したコレクションのことです。C++標準ライブラリには、配列の機能をサポートするライブラリが数多く含まれています。その中の一つが、arrayコンテナのdata()メソッドです。C++のarray::data()は、オブジェクトの先頭要素を指すポインタを返します。これにより、配列の内部バッファへ直接アクセスしたり、連続したメモリを前提とするC言語スタイルのAPIに配列を渡したりすることができます。構文array_name.data();パラメータこの関数は、引数を受け取りません。戻り値配列の先頭要素を指すポインタを返します。戻り値の型は

  9. C++で配列を使ってキュー(Queue)を実装する方法

    キューと配列とはキュー(Queue)は、FIFO(First In First Out:先入れ先出し)という順序で操作を行う線形データ構造です。最初に入れた要素が、最初に取り出されます。一方、配列は同じデータ型の要素を連続したメモリ領域に格納するデータ構造です。キューでは、要素の挿入と削除がそれぞれキューの反対側の端で行われます。そのため、片方の端だけで操作するスタックに比べて、実装はやや複雑になります。配列によるキューの実装の考え方配列でキューを実装する場合、サイズ n の配列 queue を用意し、top と end という2つの変数を使用します。初期状態では配列は空であり、top と e

  10. 【C++入門】配列の合計を求める3つの方法|STLのaccumulate関数の使い方

    配列とその合計とは配列は、同じデータ型の複数の要素を連続したメモリ領域に格納する、最も基本的な線形データ構造の一つです。「配列の合計」とは、配列に含まれるすべての要素の値を加算した結果のことです。C++には配列の合計を求める方法が複数用意されており、本記事では代表的な3つの方法をサンプルコードとともに解説します。方法1:古典的なループ処理による合計もっとも基本的な方法は、for文で配列の各要素を順番に走査し、その値を合計用の変数に加算していくやり方です。処理の流れが明快で、初心者にも理解しやすいのが特徴です。アルゴリズム手順1 : i を 0 から n-1 まで繰り返す手順2 : sum =

  11. C++における配列型の操作方法を徹底解説

    配列(array)とは、C++におけるデータ構造の一つで、同じデータ型の複数の要素を連続したメモリ領域に格納するものです。C++プログラミング言語には、配列型を操作するための組み込み関数が用意されており、その一部は多次元配列にも適用できます。これらの関数は、<type_traits>ヘッダーファイルに含まれています。本記事では、C++で配列を操作するための主要なメソッドを、実際のコード例とともに詳しく解説していきます。is_array() ― 配列かどうかを判定するis_array()は、関数に渡された変数が配列型かどうかをチェックするための関数です。このメソッドは配列の判定に厳格

  12. C++で条件演算子を使わずに変数へ別の値を代入する方法

    問題の概要条件演算子(if文や三項演算子など)を一切使わずに、変数に対して2つの候補値のうち「現在とは異なる方」の値を代入する方法を考えます。問題の詳細この問題では、変数 a が与えられ、その値は x と y のどちらか一方と等しいものとします。ここで、a の現在の値が x と y のどちらであるかを判定せずに(つまり条件分岐を一切使わずに)、もう一方の値を a に代入するプログラムを作成する必要があります。具体例で問題を確認してみましょう。入力 : a = 43 ; x = 43 , y = 21 出力 : 21説明 − a の初期値は 43 なので、もう一方の値である 21 を a の最終

  13. C++の連想配列とは?std::mapを使ったキーと値の管理方法を解説

    連想配列(マップ・辞書)とはC++における連想配列(associative array)とは、添字(インデックス)に文字型・浮動小数点型・文字列型など、任意のデータ型を使用できる特殊な配列のことです。連想配列は「マップ(map)」や「辞書(dictionary)」とも呼ばれます。通常の配列ではインデックスが0から始まる整数であるのに対し、連想配列ではインデックスのことを「キー(key)」と呼び、そのキーの位置に格納されたデータを「値(value)」と呼びます。つまり、連想配列は「キーと値のペア(key-value pair)」の集合として定義できます。連想配列のイメージ例として、バイクの車種と

  14. 【C++】数値ストリームの平均値を効率的に求める方法

    数値の平均とは、数値の合計をその個数で割った値のことです。この問題では、数値のストリーム(連続して流れてくる数値列)が与えられ、数値が1つ追加されるたびに、その時点までの平均を出力していきます。具体的な動作例を見てみましょう。5つの数値からなるストリーム「24、76、29、63、88」を考えます。各時点での平均は以下のようになります。24、50、43、48、56つまり、数値がストリームに追加されるたびに平均を計算する必要があります。具体的には、1個の数値の平均、2個の数値の平均、3個の数値の平均……と順番に求めていきます。このとき、毎回すべての数値を足し直すのではなく、直前の平均値を利用するこ

  15. C++でストリーム内の最大K個の数値の平均を求めるアルゴリズム

    ストリーム内の最大K個の数値の平均とはストリーム内の数値の平均とは、数値を挿入するたびにその時点での平均を計算することを意味します。しかし本記事で扱う問題では、ストリーム内の最大K個の数値の平均を求める必要があります。つまり、平均の計算対象となるのは配列のうち上位K個の数値のみです。新しい数値を追加する際、その数値が現在平均に寄与している数値のいずれよりも大きい場合にのみ計算に反映され、そうでなければ平均は変化しません。概念をより深く理解するために、具体例を見てみましょう。入力 : n = 4 , k = 3 , array = { 4, 9, 1 , 5} , stream = {2, 6,

  16. C++で余分な括弧を削除して文字列のバランスを取る方法

    文字列とは、文字の配列のことです。この問題では、開き括弧と閉じ括弧を含む文字列が与えられ、余分な括弧を削除することで文字列のバランスを取ることを目標とします。具体的な例を見てみましょう。入力 : )Tutor)ials(p(oin)t(...) 出力 : Tutorials(p(oin)t(...))入力文字列には、対応する開き括弧を持たない閉じ括弧「)」が含まれています。このような余分な括弧を取り除くことで、括弧の対応が正しいバランスの取れた文字列を作成します。解決のアプローチこの問題を解くには、文字列を先頭から順に走査し、括弧の対応関係をチェックします。開き括弧と閉じ括弧が正しく対応してい

  17. C++でn番目の平衡素数(バランス素数)を求める方法

    平衡素数とは 平衡素数(Balanced Prime)とは、直前の素数と直後の素数までの距離(差)が等しい素数のことです。言い換えれば、前後にある最も近い素数の平均値に一致する素数を指します。 ある素数が平衡素数であるためには、次の式を満たす必要があります。 Pn = (Pn-1 + Pn+1) / 2 ここで、nは順序付けられた素数列におけるPnのインデックス(順位)を表します。 素数の順序付き集合:2, 3, 5, 7, 11, 13, … 最初のいくつかの平衡素数は、5, 53, 157, 173, … です。 問題の概要 この問題では、数値nが与えられ、n番目の平衡素数を求めることが

  18. C++で数値を2進数表現に変換する方法【再帰処理を解説】

    2進数(バイナリ数)とは、0と1という2つの数字のみで構成される数値表現のことです。例えば、01010111 のような形で表されます。コンピュータの内部では、すべてのデータがこの2進数として扱われています。 ある数値を2進数形式で表現する方法はいくつかあります。本記事では、代表的な「再帰を使った方法」を中心に解説します。 再帰を用いた方法 この方法では、再帰呼び出しを利用して数値を2進数形式で表現します。数値を2で割り続けながら、その余りを順に出力していくことで、2進数表現を得ることができます。 アルゴリズム ステップ1: 数値が1より大きい場合、ステップ2とステップ3を実行します。 ステップ

  19. C++で二項係数の2乗の総和を求める方法を解説

    二項係数とは二項係数とは、二項定理に現れる係数で、パスカルの三角形として表現できる数の並びです。n個の要素からr個を選ぶ組み合わせの総数に相当し、nCrと表記されます。定義は以下の公式のとおりです。nCr = n! / (r!(n-r)!)またはnCr = n(n-1)(n-2)…(n-r+1) / r!二項係数の2乗の総和本記事で扱うのは、二項係数をそれぞれ2乗した値の総和です。具体的には次の式を計算します。(nC0)2 + (nC1)2 + (nC2)2 + (nC3)2 + …… + (nCn-1)2 + (nCn)2入力 : n = 5出力 : 252アルゴリズムの解説このプログラムで

  20. C++でフィボナッチ数列の2乗の総和を求める方法

    フィボナッチ数列とはフィボナッチ数列とは、0から始まり「直前の2つの数の和が次の数になる」という規則に従う数学的な数列です。たとえば、最初の数が0、2番目の数が1であれば、その和である1が3番目の数となります。F0=0, F1=1これを漸化式で表すと次のようになります。Fn = Fn-1 + Fn-2F2 = F0 + F1 = 0 + 1 = 1さらに、1と1を足すと次の数は2になります。F1=1, F2=1F3 = F1 + F2 = 1 + 1 = 2したがって、フィボナッチ数列は以下のように続いていきます。0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …フィボナッチ

Total 5990 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:85/300  20-コンピューター/Page Goto:1 79 80 81 82 83 84 85 86 87 88 89 90 91