C++

 Computer >> コンピューター >  >> プログラミング >> C++
  1. C++で二分木のノードを葉ノードになった順に出力する方法

    問題概要 二分木が与えられたとき、まずその葉ノード(リーフノード)を出力します。次に、出力した葉ノードを木から取り除き、新たに葉ノードとなったノードを出力します。この操作を、木の中にノードが一つも残らなくなるまで繰り返します。 例 以下のような二分木を例に考えてみましょう。 まず最下層の葉ノード「6 7 9 13 14」を出力して取り除き、次に新たな葉ノードとなった「3 4」を出力、続いて「2」、最後に根ノード「1」を出力します。したがって、この問題の出力は以下のようになります。 6 7 9 13 14 3 4 2 1 アプローチ この問題では、DFS(深さ優先探索)を用いたアプロ

  2. Javaのbreakステートメントとcontinueステートメントの違いを徹底解説

    プログラミングでは、コードは基本的に上から下へと1行ずつ実行されていきます。しかし、この実行フローを制御したい場面は多くあります。Javaでは、ループやswitch文の中で特定の処理をスキップしたり、処理を中断したりするために、break と continue の2つのジャンプ文が用意されています。この記事では、breakとcontinueの主な違いを表形式で整理し、実際のコード例を使って動作の違いをわかりやすく解説します。breakとcontinueの主な違いNo.項目breakcontinue1機能breakが記述された時点で、そのbreakを囲んでいるwhile、do-while、for

  3. 仮想関数と抽象クラスに関するC++インタビューの質問

    C++のオブジェクト指向プログラミングにおいて、仮想関数と抽象クラスは技術面接で頻繁に出題される重要トピックです。この記事では、よくある質問とその回答をわかりやすくまとめました。 仮想関数とは何ですか? 仮想関数(virtual function)とは、基底クラスで宣言され、派生クラスでの再定義(オーバーライド)を前提としたメンバ関数です。基底クラス側では具体的な処理を実装せず、実際の動作は子クラス側で定義します。これによりポリモーフィズム(多態性)が実現され、基底クラスのポインタや参照を通じて呼び出した場合でも、オブジェクトの実際の型に応じた適切な関数が実行されます。 抽象クラスとは何です

  4. C++のマップでユーザー定義型をキーとして使う方法

    マップ(map)は、キーと値のペアの形式で情報を格納するデータ構造です。C++では、マップはSTL(標準テンプレートライブラリ)で定義されており、キーはソートされた順序で自動的に管理されます。 マップを定義する構文 − map<key_type, value_type> map_name; マップのキーと値には、intやfloat、charといった基本データ型(プリミティブ型)や派生データ型など、任意のデータ型を指定できます。 さらに重要なのは、マップのキーとしてユーザー定義型(自分で定義したデータ型)も使用できるという点です。 ここからは、新しいデータ型を定義する構造体を作成し、

  5. C++の数学関数まとめ|sin・cos・tan・pow・sqrtなどの使い方を解説

    C++では、mathまたはcmathヘッダーに含まれる数学関数を使うことで、複雑な数値計算を簡単に実行できます。これらの関数は標準ライブラリとして定義されており、三角関数・双曲線関数・べき乗・対数・丸め処理など、さまざまな数学的な処理を効率的に行えます。本記事では、C++でよく使われる代表的な数学関数をひとつずつ詳しく解説していきます。 sin(正弦) sin関数は、引数として渡された角度(ラジアン単位)の正弦(サイン)を計算します。double型の値を1つ受け取り、sin(x) の計算結果をdouble型で返します。 double sin(double) 呼び出し構文 double x =

  6. C++で学ぶチェイン法(連鎖法)によるハッシュテーブルの実装

    ハッシュ化とは、任意の長さのデータ要素を固定サイズのキーへマッピングする手法のことです。ハッシュは「キーと値のペア」として動作します。ハッシュ関数は、ハッシュマップ内でマッピングを担う関数です。ハッシュ関数に入力された複数のデータ要素が、同じハッシュキーを持つことがあります。この場合、要素同士が衝突(オーバーラップ)してしまいます。同じハッシュキーを持つ要素の衝突を回避するために考案されたのが「チェイン法(連鎖法)」という概念です。ハッシュマップの作成ハッシュマップを作成するには、データ要素のインデックス値を決定するハッシュ関数が必要です。ここでは、n個のバケットを持つハッシュテーブルを用意し

  7. 最長共通部分列(LCS)を求めるC++プログラム

    部分列とは、元の文字列から要素を取り出す際に、元の順序を保ったまま作られる列のことです。例えば、文字列「stuv」の部分列には「stu」「tuv」「suv」などがあります。長さnの文字列から作成できる部分列の数は、2n通り存在します。そのため、すべての部分列を総当たりで調べる方法は、文字列が長くなるほど計算量が爆発的に増えてしまいます。最長共通部分列(LCS)とは最長共通部分列(Longest Common Subsequence:LCS)とは、2つの文字列に共通して現れる部分列の中で、最も長いものを指します。例えば、文字列「ABCDGH」と「AEDFHR」の場合、最長共通部分列は「ADH」と

  8. 選択ソートを使って日付を並べ替えるC++プログラムの書き方と解説

    日付は「日・月・年」の数値の組み合わせで表され、その表示形式にもさまざまなものがあります。本記事では、選択ソート(セレクションソート)を用いて日付を並べ替えるC++プログラムを紹介します。まずは、この概念に関わる基本的なポイントから見ていきましょう。日付のソートとは日付を正しくソートするには、日付の仕組みと妥当性(バリデーション)に関する確かな知識が必要です。ソート処理を実行する前に、入力された日付が有効かどうかを必ず確認しましょう。たとえば「2月29日」は、うるう年でしか存在しない日付です。日付の検証が完了したら、いよいよソートです。ここでは年 → 月 → 日の優先順位で比較し、古い日付から

  9. 指定されたイテレータの種類を判定するC++プログラムの書き方

    イテレータ(iterator)とは、ポインタとよく似たオブジェクトであり、コンテナ内の要素を順番に走査するために使用されます。イテレータを使う最大の利点は、共通のインターフェースを提供できる点にあります。これにより、アルゴリズムが実装に使用されるコンテナの型に依存しない、汎用的な設計が可能になります。 C++標準ライブラリには、以下のような複数のイテレータの種類が存在します。 前方向イテレータ(Forward Iterator) 双方向イテレータ(Bidirectional Iterator) 入力イテレータ(Input Iterator) 出力イテレータ(Output Iterator)

  10. 現在の曜日・日付・時刻を出力するC++プログラム

    現在の曜日・日付・時刻は、画面に出力されるカレンダー情報のことです。C++では、ctimeライブラリに日付と時刻に関するすべての関数や変数が含まれています。 ctimeライブラリには時刻を表示するための関数が用意されており、これを利用すれば現在の日付や時刻の詳細を簡単に確認できます。日付と時刻の情報を表示するために使用される主な関数は以下のとおりです。 time() − 現在の時刻を取得するための関数です。time()関数の戻り値はtime_t型で、time_tは時刻を格納できるデータ型です。 localtime() − time_t型の変数を、日付と時刻の両方を保持できる変数に変換する関数

  11. ファイル内の一意の単語を出力するC++プログラム

    ファイルとは、単語のストリーム(連続したテキストデータ)を格納するメモリ上の場所です。ひとつのファイルの中には、さまざまな単語が含まれています。本記事では、ファイルから「一意の単語」だけを抽出して出力するC++プログラムを紹介します。ここでいう一意の(ユニークな)単語とは、その単語がファイル内でちょうど1回だけ出現することを意味します。たとえば、次のような文があったとします。Tutorials point is best for programming tutorials.この文では、「tutorial(s)」という単語が複数回出現しているため一意ではありません。それ以外のすべての単語は一意で

  12. 【C++入門】ストリームクラスの階層構造と入出力の基本を徹底解説

    C++におけるストリームとは C++における「ストリーム」とは、プログラムと入出力(I/O)デバイスの間でやり取りされる文字データの流れを指します。 ストリームクラスは、ファイルや入出力デバイスに対する入出力操作を扱うためのクラス群です。それぞれのクラスが固有の役割を持っており、プログラムの入力・出力を効率的に処理できます。 C++のすべてのストリームクラスは、iostreamライブラリにまとめられています。 まずは、ストリームクラスの階層構造を見てみましょう。 iostreamライブラリの主要クラス iosクラス iosクラスは、すべてのストリームクラスの基底クラス(ベースクラス)です。

  13. C++とC#の違いを徹底比較!特徴と使い分けのポイント

    プログラミング言語の中でも特に人気の高いC++とC#。どちらもC言語の影響を受けたオブジェクト指向言語ですが、設計思想や動作環境には大きな違いがあります。本記事では、それぞれの言語の特徴を解説し、比較表を通じて両者の違いをわかりやすく整理します。 C++プログラミング言語とは C++は、C言語の後継として開発されたプログラミング言語で、クラスやオブジェクトという概念を導入した点が最大の特徴です。C言語の持つ低レベルな操作能力と、高水準言語の機能性を兼ね備えているため、「中間レベルの言語」と位置づけられることもあります。開発された当時は、C言語との高い類似性から「クラス付きのC(C with C

  14. C++のインクリメント演算子(++)を使って2つの数値を加算する方法

    プログラミングにおける ++ 演算子は、オペランドの値を1だけ増やす「インクリメント演算子」です。実は、この演算子を繰り返し使うことで、加算演算子(+)を使用せずに2つの数値を足し合わせることができます。具体的な考え方はシンプルです。片方の数値 a に対して、もう一方の数値 b の回数だけ 1 を加算すれば、a と b の合計が求まります。処理の例入力:a = 31 , b = 4 出力:35解説: 31に1を4回加えるため、31 + 1 + 1 + 1 + 1 = 35 となります。アルゴリズム入力:2つの整数 a と b ステップ1:0 から b までループし、各回でステップ2を実行する

  15. C++で配列の全要素がK以上になるまで最小要素を加算する方法

    配列(Array)とは、同じデータ型の要素を格納するコンテナであり、各要素は0から始まるインデックスで管理されます。この記事では、整数型の配列を扱い、配列内のすべての要素が指定された数値以上であるかどうかを確認します。具体的には、配列のすべての要素が与えられた数値 K 以上になっているかを判定し、条件を満たしていない場合は、配列内で最も小さい2つの要素を取り出して合計し、その合計値を1つの新しい要素として扱います。その後、再び同じ条件で新しい配列をチェックします。条件が満たされれば、加算を実行した回数を結果として返します。問題例Array = { 2, 6, 3, 12, 7 } K = 5

  16. C++の連結リストを使って2つの多項式を加算する方法

    この概念をより深く理解するために、まず必要な基本事項をおさらいしましょう。連結リスト(Linked List)とは連結リストは、各要素を「ノード」と呼ばれるオブジェクトとして格納するデータ構造です。各ノードは、データ部分と次のノードへのリンクの2つの要素で構成されています。多項式(Polynomial)とは多項式とは、変数と係数から構成される数学的な式のことです。例えば、x2 − 4x + 7 のようなものが該当します。多項式を表す連結リスト多項式連結リストでは、多項式の係数と指数がリストのデータノードとして定義されます。連結リストとして格納された2つの多項式を加算するには、同じ次数(べき乗)

  17. C++の浮動小数点数操作関数の使い方徹底解説

    小数をコンピュータ上で数値として扱う場合、その実装は「浮動小数点数(floating point number)」と呼ばれます。C++では、float型のサイズは32ビットです。標準ライブラリのcmathには、浮動小数点数を操作するための関数が数多く用意されており、これらを活用することで数値計算を効率的かつ正確に行うことができます。本記事では、代表的な浮動小数点数操作関数を紹介します。 fmod()関数 fmod()関数は、引数として渡された2つの値を除算した際の剰余を返します。 サンプルコード #include <iostream> #include <cmath>

  18. C++面接対策:コンストラクタとデストラクタの基礎知識まとめ

    C++の面接でよく聞かれるコンストラクタとデストラクタに関する質問をまとめました。定義や構文、用途、継承時の実行順序まで、面接対策に役立つ基礎知識をわかりやすく解説します。 コンストラクタとは何ですか? コンストラクタとは、クラス名と同じ名前を持つクラスの特殊なメンバ関数です。オブジェクトの初期化時に自動的に呼び出されます。C++には主に以下の3種類のコンストラクタがあります。 デフォルトコンストラクタ 引数付きコンストラクタ(パラメータ化コンストラクタ) コピーコンストラクタ 構文 class cl_name{ cl_name(){ // ここがコンストラクタで

  19. C++で摂氏を華氏に変換するプログラムの作成方法

    摂氏で表された温度「n」が与えられたとき、その温度を華氏に変換して表示するのが本記事の目的です。実行例入力1:100.00 出力1:212.00 入力2:-40 出力2:-40摂氏から華氏への変換公式摂氏から華氏への変換には、以下の公式を使用します。T(°F) = T(°C) × 9/5 + 32ここで、T(°C)は摂氏での温度、T(°F)は華氏での温度を表します。アプローチの手順float型の変数(例:celsius)に温度を入力する上記の公式を使って華氏へ変換する変換結果である華氏の値を出力するアルゴリズム開始 ステップ1 → 摂氏を華氏に変換する関数を宣言する void cal(

  20. C++で十二面体の表面積を計算するプログラム

    十二面体とは? 「十二面体(dodecahedron)」という言葉は、ギリシャ語に由来しています。「dodeca」は「12」、「hedron」は「面」を意味します。幾何学における十二面体とは、12枚の平面から構成される3次元の正多面体(プラトンの立体)のことです。 他の立体図形と同様に、十二面体にも以下のような特徴的な性質があります。 20個の頂点 30本の辺 12枚の正五角形の面(五角形は5つの辺を持つ多角形) 以下は十二面体の図です。 問題 一辺の長さが与えられたとき、その十二面体の表面積を求めるプログラムを作成します。ここでいう表面積とは、図形のすべての面が占める空間の総面積のこ

Total 5990 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:70/300  20-コンピューター/Page Goto:1 64 65 66 67 68 69 70 71 72 73 74 75 76