-
C++で置換によりバランスの取れた括弧式を判定する方法
バランスの取れた括弧式とは? バランスの取れた括弧式とは、すべての種類の括弧が正しい順序で対になっている式のことです。つまり、開き括弧「{」「[」「(」の一つひとつに対して、適切な順序で対応する閉じ括弧「}」「]」「)」が存在する状態を指します。 具体例を見ながら、この概念をより深く理解しましょう。 入力式: {([][]{})({}[]{})} 出力: バランスが取れている 説明: すべての開き括弧に対して、正しい順序で閉じ括弧が対応しています。開き括弧と閉じ括弧の間に挟まれた括弧も、それぞれ正しくペアになっています。 出力: バランスが取れていない 説明: 順序が崩れた括弧のペアが存
-
指定された位置に開き括弧を含むバランスの取れた式をC++で数える方法
バランスの取れた括弧式とは、あらゆる種類の括弧が正しい順序で対になっている式のことです。つまり、すべての開き括弧に対して、適切な順序で対応する閉じ括弧が存在している必要があります(例:{ })。 入力例 − {([][]{})({}[]{})} 出力 − balanced(バランスが取れている) 本記事では、与えられた数の括弧から作成できるすべてのバランスの取れた式のうち、指定された位置に必ず開き括弧が配置されるものを数える問題を扱います。 具体的には、整数 n と、長さ 2n の括弧の位置情報を表す配列が与えられます。「1」でマークされた位置には必ず開き括弧「{」が配置されるという条件のも
-
【C++入門】パスワードの強度(弱・中・強)を判定するプログラムの作り方
パスワードとして入力された文字列を受け取り、そのパスワードがどれほど安全か(推測されにくいか・解読されにくいか)を「弱い」「普通」「強い」の3段階で判定するプログラムを、C++で実装してみましょう。パスワード強度の判定基準パスワードの強度を評価するには、以下の条件を満たしているかどうかを確認します。パスワードは8文字以上であること小文字のアルファベットを1文字以上含むこと大文字のアルファベットを1文字以上含むこと数字を1つ以上含むこと特殊記号(! @ # $ % ^ & * ( ) > < , . + = - など)を1つ以上含むことたとえば「tutorialspoint」
-
大きな数の商と余りを求めるC++プログラム
大きな数を文字列として格納した num と、別の数 m が与えられたとき、除算によって商を求め、剰余演算によって余りを計算して出力するのが本記事の課題です。出力は「余り = xxx、商 = yyy」の形式で表示します。例えば、入力として num = 14598499948265358486、m = 487 が与えられた場合、余りは 430、商は 29976385930729688 となります。入力例と出力例入力: num = 214755974562154868 m = 17 出力: 余り = 15 商 = 12632704386009109 入力: num = 214
-
ランダムに選んだ3つの数が等差数列(AP)になる確率を求めるC++プログラム
問題の概要数値の配列が与えられたとき、その中からランダムに選んだ3つの数が等差数列(AP: Arithmetic Progression)をなす確率を求めることが本記事の課題です。等差数列(AP)とは、隣り合う項同士の差が常に一定である数列のことです。例えば「2, 4, 6」のように、各項の間に共通の差が存在します。入出力例入力: arr[] = { 2,3,4,7,1,2,3 }出力: ランダムに選んだ3つの数が等差数列になる確率: 0.107692入力: arr[] = { 1, 2, 3, 4, 5 }出力: ランダムに選んだ3つの数が等差数列になる確率: 0.151515解き方のアプロ
-
C++で二重積分を計算するプログラム|シンプソン1/3則による数値積分の実装
変数xの下限・上限、変数yの下限・上限、そしてx・yそれぞれの刻み幅(ステップ幅)が与えられたとき、二重積分を数値的に計算し、その結果を表示するのが本記事のテーマです。 入出力の例 入力: xの刻み幅 = 1.2 yの刻み幅 = 0.54 xの下限 = 1.3 xの上限 = 2.1 yの下限 = 1.0 yの上限 = 2.1 出力: double integration is : 2.1 計算のアプローチ 本プログラムでは、以下の手順で二重積分を求めます。 xとyの上限・下限の値に加えて、x・yそれぞれの刻み幅を入力として受け取ります。 二重積分の計算にはシンプソン1/3則(Simpson
-
指定した年数までの奇数日数を計算するC++プログラム
正の整数 n が与えられたとき、1年目から n 年目までに含まれる「奇数日(odd days)」の総数を求めるのが、このプログラムの目的です。奇数日とは、総日数を1週間の日数である7で割った余りのことで、カレンダー計算の基礎となる重要な概念です。 実行例 入力: days = 500 出力: 奇数日の数: 5 入力: days = 400 出力: 奇数日の数: 0 奇数日数の計算方法 奇数日を計算する際に最初に確認すべきは、対象の年が閏年かどうかという点です。閏年か平年かによって、1年あたりの奇数日の数が変わるためです。閏年の判定基準は以下のとおりです。 4で割り切れる年は閏年である ただし
-
【C++】投資額と投資期間から利益配分比率を計算するプログラム
本記事では、複数の出資者による投資額を格納した配列と、それぞれの投資期間を格納した配列が与えられたとき、利益配分比率(profit sharing ratio)を求めるC++プログラムを紹介します。 利益配分比率とは 組合企業(パートナーシップ)では、事業への出資額(資本)に応じて各パートナー間で損益が配分されます。この出資割合をもとに利益配分比率を計算することで、各パートナーが受け取るべき利益の額を決定できます。 計算式: パートナー1 = 出資額 × 投資期間パートナー2 = 出資額 × 投資期間パートナー3 = 出資額 × 投資期間…パートナーn = 出資額 × 投資期間 利益配分比率
-
【C++】入力した数値がラッキーナンバーかどうかを判定するプログラム(すべての桁が異なる数字)
数値が与えられたとき、その数値がラッキーナンバーかどうかを判定し、結果を表示するのが本記事の目的です。 ラッキーナンバーとは ラッキーナンバーとは、すべての桁の数字が互いに異なる数のことです。もし1つでも同じ数字が繰り返して現れる場合、その数はラッキーナンバーとはみなされません。 例 入力 -: n = 1234 出力 -: ラッキーナンバーです 説明 -: 数値nには繰り返し現れる数字がないため、ラッキーナンバーです 入力 -: n = 3434 出力 -: ラッキーナンバーではありません 説明 -: 数値nでは3と4がそれぞれ2回現れているため、ラッキーナンバーではありません 本プログラ
-
3D空間上の4点が同一平面上にあるかどうかを判定するC++プログラム
共平面(コプラナー)とは3次元空間において、4つの点 (x1, y1, z1)、(x2, y2, z2)、(x3, y3, z3)、(x4, y4, z4) が与えられたとき、これらの点がすべて同一の平面上に存在するかどうかを判定する問題を考えます。すべての点が同じ平面上に乗っている場合、その点たちは「共平面(コプラナー)」であるといいます。逆に、点が異なる複数の平面にまたがっている場合は、共平面ではありません。下図は、4つの点がすべてxy平面上に存在する例です。この場合、点たちは共平面であるといえます。一方、下図のように4つの点がそれぞれ異なる平面上に存在する場合、点たちは共平面ではありませ
-
小数点以下n桁までの割り算を計算するC++プログラム
正の整数 x と y、および小数点以下の桁数 n が与えられたとき、割り算の結果を小数点以下 n 桁まで求めるのが本記事の目的です。実行例入力:x = 36, y = 7, n = 5 出力:5.14285 入力:x = 22, y = 7, n = 10 出力:3.1428571428プログラムで使用するアプローチa(被除数)、b(除数)、n(小数点以下の桁数)の値を入力として受け取るb が 0 の場合は除算が無限に続くため「Infinite」と表示する。また、a が 0 の場合は何を割っても結果は 0 になるため「0」と表示するn が 1 より大きい場合は、余りの値を保持し、被除数からそ
-
sin(x)とcos(x)の値を計算するC++プログラムの解説
sin(x)とcos(x)の値を計算するC++プログラム 本記事では、角度を入力として受け取り、その角度に対応するsin(x)(正弦)とcos(x)(余弦)の値を計算して結果を表示するC++プログラムを解説します。ライブラリ関数に頼らず、テイラー展開(マクローリン展開)を用いて数値を近似する手法を紹介します。 sin(x)とは sin(x)は三角関数の一つで、角度xに対する正弦の値を求めるために使用されます。直角三角形では、斜辺に対する対辺の比として定義されます。 $$\sin (x) = \displaystyle\sum\limits_{k=0}^\infty \frac{(-1)^{k
-
時間を分と秒に変換するC++プログラムの解説
本記事では、時間(hour)を入力として受け取り、それを分と秒に変換して結果を出力するC++プログラムを紹介します。変換に使用する計算式時間を分と秒に変換する際には、以下の式を使用します。1時間 = 60分 分 = 時間 × 60 1時間 = 3600秒 秒 = 時間 × 3600入出力例入力:hours = 3 出力:3時間は180分です 3時間は10800秒です 入力:hours = 5 出力:5時間は300分です 5時間は18000秒ですプログラムのアプローチ時間の値を整数型の変数 n に入力として受け取る上記の変換式を適用し、時間を分と秒に変換す
-
0を中心とした鏡像の三角形パターンを出力するC++プログラム
正の整数 n が与えられたとき、数字が 0 を中心として左右対称(鏡像)に並ぶ三角形パターンを生成し、その結果を表示します。 例 入力 -: n = 6 出力 -: 入力 -: n = 3 出力 -: パターンの仕組み このパターンでは、各行の数字が中央に向かって 0 から順に増加し、中央を境に再び 0 へと減少していきます。行が下に進むごとに数字の数は 2 つずつ増え、全体としてピラミッド型の鏡像パターンが形成されます。この対称的な数列は、abs(k - temp2) のように絶対値を利用することで簡単に生成できます。 以下のプログラムで使用しているアプローチは次のとおりです − n
-
C++で数の奇数の約数(奇因子)の合計を求めるプログラム
正の整数が与えられたとき、その数の奇数の約数(奇因子)をすべて求め、それらの合計を計算するのが本プログラムの目的です。 例 入力: number = 20 出力: 奇数の約数の合計は: 6 入力: number = 18 出力: 奇数の約数の合計は: 13 例えば number = 20 の場合、約数は 1, 2, 4, 5, 10, 20 ですが、このうち奇数は 1 と 5 のみです。したがって、結果 = 1 + 5 = 6 となります。 プログラムで使用するアプローチ 奇数の約数の合計を計算する対象の数を入力する 偶数の約数を除外するため、まず数を2で割り切れる限り2で割り続け、奇数の部
-
オペレーティングシステムでデッドロックを防ぐための最小リソース数を求めるC++プログラム
メモリ上に存在するプロセスの数を P、各プロセスが実行を完了するまでに必要なリソースの数を N とします。このとき、デッドロックが決して発生しないようにするために割り当てるべきリソースの最小数 R を求めるのが本記事のテーマです。 デッドロックとは デッドロックとは、オペレーティングシステム上で複数のプロセスが互いに相手の持つリソースを待ち合い、誰も処理を先へ進められなくなる状態のことです。プログラムの実行に必要なリソースが、別のリソースの解放を待っているプロセスによって占有されているため、実行が永久に停止してしまいます。 たとえば、メモリ上に P1 と P2 という2つのプロセスがあり、
-
C++でクラス区間の算術平均を計算するプログラムの作成方法
ここでは、3つの配列が与えられた状況を考えます。1つ目の配列には各クラス区間(階級)の上限、2つ目の配列には下限、3つ目の配列には度数が格納されています。この記事では、これらのデータからクラス区間の算術平均を求める手順を解説し、実際に動作するC++プログラムを紹介します。 算術平均とは? 算術平均(相加平均)とは、データ集合に含まれるすべての要素の合計を、その集合の要素の総数で割ることで求められる平均値のことです。統計学において最も基本的な代表値の一つであり、データ全体の中心的な傾向を示します。 クラス区間の算術平均の計算方法 クラス区間ごとにまとめられたデータでは、個々の値がわからないため、
-
【C++】混合液の置換操作を繰り返した後に残る量を求めるプログラム
このチュートリアルでは、混合物の置換操作を繰り返した後に残る牛乳の量を求めるC++プログラムについて解説します。 問題の概要 容器にXリットルの牛乳が入っているとします。そこからYリットルの牛乳を取り出し、代わりに同量のYリットルの水を注ぎます。この同じ操作を合計Z回繰り返したとき、容器に最終的に残る牛乳の量を求めるのが今回の課題です。 計算式の導出 1回の置換操作のたびに、牛乳は一定の割合で減少していきます。各操作間の値の関係を整理すると、Z回の操作後に残る牛乳の量は次の式で表せます。 残量 = ((X − Y) / X)Z × X この式では、1回の操作後に残る牛乳の割合 (X − Y)
-
C++で三角形の内接円の半径を求めるプログラム
はじめにこのチュートリアルでは、与えられた三角形の内接円(インサークル)の半径を求めるC++プログラムについて解説します。具体的には、三角形の3辺の長さが入力として与えられ、その三角形に内接する円の半径を計算することが課題となります。内接円の半径を求める公式内接円の半径 r は、次の公式で求めることができます。内接円の半径 = 三角形の面積 ÷ 三角形の半周長ここで、三角形の面積は3辺の長さから求められるヘロンの公式を利用します。半周長を p = (a + b + c) / 2 とすると、面積 S は S = √(p × (p − a) × (p − b) × (p − c)) で表されます。
-
連続する2年間の複利から利率を求めるC++プログラム
このチュートリアルでは、連続する2年間の複利から利率(パーセント)を求めるC++プログラムについて解説します。ここでは、2つの連続する年の複利を表す整数AとBが与えられます。私たちのタスクは、これらの値から利率を計算することです。複利の仕組みでは、2年目の利息は「元金+1年目の利息」に対して計算されます。与えられた値の関係を導き、元金を式から消去すると、次の公式が得られます。rate = ((B-A)*100)/Aつまり、1年目の利息Aと2年目の利息Bの差(B-A)は、Aに対して発生した1年分の利息に相当するため、この式で利率を直接求めることができます。サンプルコード#include <