-
C++で可変長配列を実装するプログラムの書き方
可変長配列とは、あらかじめサイズが固定されておらず、ユーザーの必要に応じてサイズを決められる配列のことです。プログラムの実行時にサイズを指定できるため、状況に応じた柔軟なデータ管理が可能になります。 ここでは、C++で可変長配列を実装するプログラムの例を紹介します。 サンプルコード #include <iostream> #include <string> using namespace std; int main() { int *array, size; cout&
-
C++でベクトル(vector)を実装するプログラムの書き方
ベクトル(vector)とはC++のベクトル(vector)は、要素の挿入や削除に応じて自動的にサイズを変更できる動的配列です。ベクトルの要素は連続したメモリ領域(ストレージ)に格納され、その記憶域の管理はコンテナ側が自動的に行います。そのため、プログラマーは配列のサイズ管理を意識することなく、通常の配列のように手軽にデータを扱えます。以下に、ベクトルを実装したプログラムの例を示します。サンプルコード#include <iostream> #include <vector> #include <string> #include <cstdlib>
-
【C++】構造体を使って2つの距離(フィート・インチ)を加算するプログラムの作成方法
構造体(struct)とは構造体とは、異なるデータ型の項目をひとつにまとめて扱えるデータ構造です。複数のデータ型を持つレコードを組み合わせた複雑なデータ構造を作成する際に非常に役立ちます。構造体は struct キーワードを使用して定義します。構造体の定義例は以下のとおりです。struct DistanceFI { int feet; int inch;};この構造体は、フィート(feet)とインチ(inch)の2つのメンバ変数で距離を表現しています。2つの距離を加算するC++プログラム以下は、C++で
-
構造体を関数に渡して複素数を加算するC++プログラムの書き方
複素数とは複素数とは、a+bi の形式で表される数のことです。ここで i は虚数単位、a と b は実数を表します。複素数の具体例は以下の通りです。2+5i 3-9i 8+2i2つの複素数を加算する場合、実部同士、虚部同士をそれぞれ足し合わせます。つまり、(a+bi) + (c+di) = (a+c) + (b+d)i という計算になります。本記事では、C++の構造体を使って複素数を表現し、それを関数に渡して加算する方法を解説します。サンプルプログラム以下は、構造体を関数に渡すことで複素数の加算を行うC++プログラムの完全なコードです。#include <iostream> us
-
C++で辞書式順序(辞書順)に文字列をソートする方法
辞書式順序(辞書順)とは辞書式順序(レキシコグラフィカル・オーダー)とは、単語をアルファベットの順序に従って並べる方法のことです。辞書で言葉が並べられているのと同じ規則で、リスト内の要素を整列させます。例えば、以下のようになります。単語リスト:HarryAdamSam辞書式順序に並べた結果:AdamHarrySamこの記事では、C++を使って複数の文字列を辞書式順序にソートするプログラムを紹介します。サンプルプログラム以下は、ユーザーから入力された5つの文字列を辞書式順序に並べ替えるC++プログラムです。#include <iostream>using namespace std;
-
C++で乱数を生成する方法:rand関数とsrand関数の使い方を解説
C++では、標準ライブラリに含まれる rand() 関数を使うことで、簡単に乱数を生成できます。また、srand() 関数は、rand() が内部で利用する乱数生成器の「シード(種)」を設定する役割を持っています。 ここでは、rand() と srand() を使用した具体的なプログラム例を紹介します。 プログラム例1:固定シード値を使う場合 #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main() { srand(1);
-
【C++】ビット演算子だけで加算を実現するプログラムの書き方
ビット演算子とは ビット演算子とは、数値を構成する個々のビットを直接操作するための演算子です。代表的なものには、ビットAND(&)、ビットOR(|)、ビットXOR(^)、左シフト(<<)などがあります。 本記事では、これらのビット演算子を活用して、「+」演算子を使わずに加算(足し算)を実現するC++プログラムを紹介します。 サンプルプログラム #include<iostream> using namespace std; int main() { int num1, num2, carry; &nbs
-
【C++入門】substr()関数で部分文字列を取得する方法
C++における部分文字列とは 部分文字列(substring)とは、ある文字列の一部分を指します。C++では、標準ライブラリのsubstr()関数を使うことで、元の文字列から任意の部分文字列を簡単に取り出せます。 substr()関数は、次の2つの引数を受け取ります。 pos:部分文字列の抽出を開始する位置(先頭の文字は0番目) len:抽出する文字数 以下に、C++で部分文字列を取得するプログラムの例を示します。 サンプルコード #include <iostream> #include <string.h> using namespace std; int ma
-
C++のstrstr()関数とは?文字列内の部分文字列検索方法を解説
C++のstrstr()関数は、ヘッダーファイル string.h で定義されている標準関数の一つです。この関数は、ある文字列の中から特定の部分文字列(サブストリング)を検索し、その最初の出現位置を見つけるために使用されます。文字列の照合は終端文字「\0」で停止し、「\0」自体は検索対象に含まれません。 strstr()関数の構文 strstr()関数の構文は以下の通りです。 char *strstr( const char *str1, const char *str2) 上記の構文では、strstr()は文字列 str1 の中から文字列 str2 が最初に出現する位置を検索します。見つかっ
-
【C++入門】多重継承の基本と実装方法をわかりやすく解説
多重継承(Multiple Inheritance)とは多重継承とは、ひとつのクラスが複数の基底クラス(親クラス)から派生する仕組みのことです。多重継承を利用することで、派生クラスは複数の基底クラスが持つ機能やデータメンバをまとめて引き継ぐことができます。これはC++に代表されるオブジェクト指向プログラミング言語における重要な機能のひとつです。多重継承の構造を表した図が以下になります。C++で多重継承を実装するサンプルプログラムここでは、C++で多重継承を実装したサンプルプログラムを紹介します。クラスCが、クラスAとクラスBの2つのクラスを同時に継承する例です。サンプルコード#include
-
C++のisspace()関数とは?空白文字判定の使い方とサンプルコード
isspace()関数とはisspace()関数は、<ctype.h>(C++では<cctype>)ヘッダーに定義されている標準ライブラリ関数の一つです。引数として渡された文字が空白文字(ホワイトスペース)であるかどうかを判定し、空白文字の場合は0以外の値(真)、そうでない場合は0(偽)を返します。isspace()関数が空白文字と判定する主な文字は以下の通りです。半角スペース( )水平タブ(\t)垂直タブ(\v)改行(\n)フォームフィード(\f)キャリッジリターン(\r)例1:文字列内のスペース数をカウントする次のプログラムは、isspace()関数を使って文字列内
-
C++の静的データメンバ(staticメンバ変数)とは?仕組みと使い方を実例で解説
静的データメンバとは静的データメンバ(staticデータメンバ)とは、staticキーワードを使って宣言されるクラスのメンバです。クラスから生成されるオブジェクトの数に関わらず、静的データメンバの実体はクラス内にただ一つだけ存在します。これは、すべてのオブジェクトがこの静的データメンバを共有しているためです。また、最初のクラスオブジェクトが生成されるタイミングで、静的データメンバは自動的にゼロで初期化されます。この特性を活かすと、「生成されたオブジェクトの総数」のように、クラス全体で共通して管理したい値を持つことができます。静的データメンバの宣言構文静的データメンバは、次のような構文で宣言しま
-
参照渡しを使って3つの数値を循環的に入れ替えるC++プログラム
C++では、参照渡し(コール・バイ・リファレンス)を利用することで、3つの数値を循環順序で入れ替えることができます。具体的には、関数 cyclicSwapping() に3つの変数のアドレスを渡し、関数内で元の変数の値を直接書き換えることで、循環的な入れ替えを実現します。 循環入れ替えの仕組み このプログラムでは、x・y・z の3つの値が以下の手順で循環的に移動します。 一時変数 temp に y の値を保存する y に x の値を代入する x に z の値を代入する z に temp(元の y の値)を代入する その結果、「x の値は y へ、y の値は z へ、z の値は x へ」とい
-
C++で2つの時刻(時間・分・秒)の差を計算するプログラムの書き方
時間・分・秒の形式で与えられた2つの時刻(期間)があり、その差を求めたいという場面はよくあります。本記事では、C++を使って2つの時刻の差を正しく計算する方法を、サンプルコードとともにわかりやすく解説します。例えば、次のような計算を行います。時刻1 = 8:6:2 時刻2 = 3:9:3 時刻の差 = 4:56:59一見単純な引き算に見えますが、秒や分がマイナスにならないよう「桁借り」の処理が必要になる点がポイントです。C++プログラムの全体コード2つの時刻の差を計算するプログラムは以下の通りです。サンプルコード#include <iostream> using namespace
-
C++のiscntrl()関数とは?制御文字の判定方法をわかりやすく解説
C++のiscntrl()関数は、指定された文字が制御文字(コントロール文字)であるかどうかを判定するための関数です。この関数は ctype.h ヘッダーファイル内で定義されており、改行(\n)やタブ(\t)など、画面に直接表示されない特殊な文字をチェックする際に活用されます。iscntrl()関数の構文iscntrl()関数の基本的な構文は以下のとおりです。int iscntrl ( int ch );引数 ch には、判定対象となる文字を渡します。文字が制御文字であれば0以外の値(真)を返し、制御文字でなければ0(偽)を返します。例1:文字列に含まれる制御文字の数をカウントする次のプログラ
-
C++の純粋関数とは?特徴とstrlen()・sqrt()を使った実装例をわかりやすく解説
純粋関数(Pure Function)とは、同じ引数の値に対して常に同じ結果を返す関数のことです。純粋関数は結果を返すだけにとどまり、引数の変更、入出力ストリームへのアクセス、出力生成といった余計な副作用(Side Effect)を一切持ちません。この性質により、純粋関数はプログラムの動作が予測しやすく、テストやデバッグ、並列処理においても扱いやすいという大きなメリットがあります。純粋関数と非純粋関数の例C++標準ライブラリには、純粋関数として振る舞うものが多数存在します。代表的な例としては以下のような関数が挙げられます。純粋関数の例: sin()、strlen()、sqrt()、max()、
-
循環キューを実装するC++プログラム
キューは、要素の集合を格納する抽象データ構造の一つです。キューはFIFO(First In First Out:先入れ先出し)方式を採用しており、最初に挿入された要素が最初に取り出されます。循環キュー(Circular Queue)はキューの一種で、配列の末尾と先頭をつなげて円形にした構造を持っています。これにより、配列の後方に空きがなくても、先頭側の空きスペースを再利用できるという利点があります。この記事では、挿入・削除・表示の3つの操作を実装した、循環キューのC++プログラムを紹介します。循環キューの基本的な仕組み循環キューでは、front(先頭)とrear(末尾)の2つのインデックスを使
-
C++で優先キュー(プライオリティキュー)を実装する方法
通常のキュー(待ち行列)は、FIFO(First-In-First-Out:先入れ先出し)方式で動作するデータ構造です。要素の挿入は一方の端(末尾)から行い、削除はもう一方の端(先頭)から行います。そのため、最初に入った要素が必ず最初に取り出されます。 キューの基本操作 EnQueue(int data):末尾に要素を挿入する int DeQueue():先頭から要素を削除する 一方、優先キュー(プライオリティキュー)はFIFOの原則には従いません。代わりに、各要素が「緊急度」に応じた優先度を持ちます。 同じ優先度を持つ要素同士は、FIFO(先入れ先出し)の順序で処理されます。 優先度の
-
C言語のgetchar_unlocked()関数とは?getchar()との違いと使い方を解説
getchar_unlocked()関数とは C言語のgetchar_unlocked()関数は、標準入力から1文字を読み取るための関数です。基本的な動作はgetchar()とほぼ同じですが、最大の違いはスレッドセーフではないという点にあります。 通常のgetchar()は、読み取り時にストリームのロックを取得して保護するため、マルチスレッド環境でも安全に利用できます。一方、getchar_unlocked()はこのストリームのロックチェックを行いません。そのため、複数のスレッドから同時に呼び出すと動作が保証されず、Windows環境では非推奨(deprecated)とされています。 ただし、
-
C/C++のisalpha()とisdigit()関数の使い方を徹底解説
isalpha()関数とはisalpha()関数は、渡された文字がアルファベット(英字)であるかどうかを判定するための関数です。この関数は「ctype.h」ヘッダーファイルで宣言されており、引数がアルファベットの場合は0以外の整数値を返し、そうでない場合は0を返します。C言語におけるisalpha()の構文は以下の通りです。int isalpha(int value);引数の説明:value - 判定対象となる文字を整数型(int)で渡します。通常はchar型の文字をそのまま指定します。以下はC言語におけるisalpha()の使用例です。サンプルコード#include<stdio.h&g