-
C言語で十角形の周囲長を計算する方法を解説
十角形(デカゴン)とは? 十角形(デカゴン)とは、10個の辺を持つ多角形のことで、「10角形」とも呼ばれます。10個の頂点と10本の辺を持ちます。特に正十角形の場合、すべての辺の長さが等しく、それぞれの内角は144度になります。 以下は十角形の図です。 十角形の周囲長を求めるには、次のシンプルな公式を使用します。 周囲長 = 10 × 辺の長さ 計算例 入力:side = 10 出力:十角形の周囲長:100 入力:side = 20 出力:十角形の周囲長:200 アルゴリズム 開始 ステップ1 → 周囲長を求める関数を宣言する void perimeter(int n)
-
C言語でnPr(順列)を計算するプログラムの書き方
本記事では、n個の中からr個を選んで並べる順列「nPr」の値を、C言語を使って計算する方法を解説します。ここで、Pは順列を表し、nは全体の要素数、rは並べる要素の数を意味します。順列とは、データを一定の順序に従って並べることを指します。順列と組み合わせの違いは、順列が「並べ方」の総数を求めるのに対し、組み合わせは集合から要素を「選び方」の総数を求めるという点にあります。順列を求めるための公式は以下の通りです。nPr = (n!)/(n-r)!計算例入力:n=5、r=2 出力:20この例では、5個の要素から2個を選んで並べる方法が20通りあることを示しています。アルゴリズム開始 ステップ1:nP
-
C言語で特定の年がうるう年かどうかを判定するプログラム
うるう年は366日、平年は365日です。本記事では、C言語を用いて、指定された年がうるう年かどうかを判定するプログラムを紹介します。 うるう年の判定には、グレゴリオ暦における次の3つのルールが用いられます。 4で割り切れる年はうるう年である ただし、100で割り切れる年は平年である ただし、400で割り切れる年はうるう年である なお、「4または400で割り切れる年はすべてうるう年」という単純な判定では、1900年や2100年のように「100で割り切れるが400では割り切れない年」を誤ってうるう年と扱ってしまうため、正確な判定には上記の3条件を組み合わせる必要があります。 実行例 入力:
-
【C言語】センチメートルをフィートとインチに変換するプログラム
センチメートル(cm)で表された長さが入力として与えられたとき、その長さをフィート(ft)とインチ(in)に変換するのが本記事のテーマです。C言語を使えば、ごくシンプルな関数ひとつでこの変換を実現できます。 長さの変換公式 センチメートルからフィート・インチへの変換には、次の換算式を使用します。 1 フィート = 30.48 cm 1 インチ = 2.54 cm これらを逆算すると、1cmは約0.3937インチ、約0.0328フィートに相当します。プログラムでは、この係数をセンチメートルの値に掛けることで変換を行います。 入出力例 Input-: centimetre = 100 Out
-
C言語で単位行列を生成・判定するプログラムの解説
行数 r と列数 c が等しい正方行列 M[r][c] が与えられたとき、その行列が単位行列であるかどうかを判定したり、単位行列そのものを生成したりすることができます。本記事では、C言語を使って単位行列を出力するプログラムの考え方と実装方法をわかりやすく解説します。 単位行列とは 単位行列(ユニット行列とも呼ばれます)は、サイズ n×n の正方行列の一種で、左上から右下への対角成分(主対角線上の要素)がすべて 1 であり、それ以外の非対角成分がすべて 0 となる行列です。単位行列は一般的に「I」という記号で表され、行列の乗算において数値の「1」に相当する役割を持つ、非常に重要な行列です。 以
-
配列内の最小値・最大値の素数を求めるC++プログラム
問題文n個の正整数からなる配列が与えられたとき、その中に含まれる素数のうち、値が最小のものと最大のものを見つけることを考えます。例えば、次のような配列が与えられた場合を考えてみましょう。arr[] = {10, 4, 1, 12, 13, 7, 6, 2, 27, 33} この場合、最小の素数は「2」、最大の素数は「13」となります。アルゴリズムこの問題は、あらかじめ素数表を作成しておくことで効率的に解くことができます。手順は以下の通りです。入力配列の中から最大値を求めます(maxNumber と呼びます)。1 ~ maxNumber の範囲の素数を「エラトステネスの篩」で生成し、動的配列(
-
【C言語】ラジアンを度(°)に変換するプログラムの書き方
プログラミングで角度を扱う際には、「ラジアン」と「度(°)」という2つの単位を行き来する場面がよくあります。入力値がラジアンで与えられた場合には、決められた公式を使って度へ変換することができます。 ラジアンは角度を測るための標準的な単位です。一方、円の一周(全角)は360度として表されます。両者には「πラジアン = 180度」という関係があるため、1ラジアンは約57.3度に相当します。 変換公式 degree = radian * (180/pi) ※ pi = 3.14 または 22/7 計算例: 入力:radian = 9.0 出力:degree is : 515.92357 アルゴリズ
-
n番目の偶数を求めるC言語プログラム
問題の概要数値Nが与えられたとき、N番目の偶数を求めるプログラムを作成します。偶数とは、2で割り切れて余りが0になる数のことです。具体的には、2、4、6、8、10……と続きます。偶数の性質に注目する偶数の並びを注意深く観察すると、次のように掛け算の形で表現できることがわかります。2×1=2、2×2=4、2×3=6、2×4=8、……2×Nつまり、この問題は複雑な処理を必要とせず、単純に数値Nに2を掛けるだけで解くことができます。その結果は必ず2で割り切れる数、すなわち偶数になります。計算量はO(1)であり、非常に効率的なアプローチです。具体例入力: n = 4出力: 8最初の4つの偶数は 2,
-
C言語でn番目の奇数を求めるプログラム
概要数値Nが与えられたとき、N番目の奇数を求めるのがこの問題の目的です。奇数とは、2で割り切れず、余りが0にならない数のことです。具体的には、1, 3, 5, 7, 9, … のように続く数列を指します。奇数の性質と計算式奇数の並びをよく観察すると、次のような規則性があることが分かります。(2×1)-1 = 1(2×2)-1 = 3(2×3)-1 = 5(2×4)-1 = 7…(2×N)-1つまり、この問題を解くには、数値Nに2を掛け、その結果から1を引くだけで求められます。この「2N-1」という計算式こそが、N番目の奇数を導き出すシンプルな公式です。実行例入力: 4出力: 7(4番目の奇数は
-
【初心者向け】長方形の面積と外周を求めるC言語プログラムの書き方
長方形の「長さ」と「幅」が与えられたとき、その面積と外周(周囲の長さ)を計算する方法を、C言語のサンプルコード付きでわかりやすく解説します。 長方形とは? 長方形とは、4つの辺と4つの直角(90度)を持つ2次元の図形です。長方形では、隣り合う辺の長さは異なりますが、向かい合う辺どうしは必ず同じ長さになります。また、2本の対角線も互いに等しい長さを持ちます。 下の図は長方形を模式的に表したものです。 ここで、Aは長方形の幅(breadth)、Bは長さ(length)を表しています。 面積と外周の計算式 面積の公式 長方形の面積は、次の式で求められます。 面積 = 長さ × 幅 外周の公式
-
C言語でアームストロング数を判定するプログラムの作成方法
アームストロング数とは? 本記事では、入力された整数 n がアームストロング数(Armstrong number)であるかどうかを判定するCプログラムについて解説します。 アームストロング数とは、各桁の数字をそれぞれ「桁数(位数)」でべき乗し、その総和が元の数値と等しくなる数のことです。例えば、4桁の数 1634 は 14 + 64 + 34 + 44 = 1 + 1296 + 81 + 256 = 1634 となるため、アームストロング数です。 アームストロング数を求める基本的な考え方は、次の式のように表せます。 計算式: wxyz…. = pow(w, n) + pow(x, n) + p
-
C/C++の三項演算子(条件演算子)の基本と使い方をわかりやすく解説
C/C++における三項演算子(条件演算子)は、条件に応じて2つの値のどちらか一方を返すための演算子です。if-else文を1行で簡潔に書きたい場合などに活用されます。三項演算子の構文三項演算子の基本的な構文は以下のとおりです。(式1) ? 式2 : 式3この演算子は、式の評価結果に応じて2つの値のいずれかを返します。まず「式1」が評価され、その結果がブール値の true(真) であれば「式2」が評価され、その値が最終的な結果として返されます。逆に false(偽) であれば「式3」が評価され、その値が返されます。サンプルプログラム:2つの数値の最大値を求めるここでは、三項演算子を使って2つの整
-
C/C++で文字列の母音と子音を交互に並べ替えるアルゴリズム
母音と子音が混在した入力文字列が与えられたとき、母音と子音が交互に並ぶように文字列を並べ替える問題を考えます。このような交互配置が可能かどうかは、入力文字列が以下のいずれかの条件を満たしているかどうかで決まります。 母音と子音の数が同じであること。例えば、文字列「individual」は母音が5個、子音が5個です。 母音の方が多い場合は、母音と子音の数の差がちょうど1であること。例えば、文字列「noe」は母音が2個、子音が1個です。 子音の方が多い場合は、子音と母音の数の差がちょうど1であること。例えば、文字列「objective」は母音が4個、子音が5個です。 逆に言えば、母音と子音の
-
C言語の構造体メンバー配列で自動的に行われるディープコピーの仕組み
構造体(struct)を使用すると、ユーザー定義のデータ型を作成できます。構造体のメンバーには、int や char といった基本データ型だけでなく、静的に確保されたメモリを持つ配列も含めることができます。ある構造体変数を別の構造体変数に代入すると、通常は「シャローコピー(浅いコピー)」が行われます。しかし、ここには重要な例外があります。構造体のメンバーが配列である場合、コンパイラは自動的にディープコピー(深いコピー)を実行します。以下のサンプルコードで、この挙動を確認してみましょう。サンプルコード#include <stdio.h> #include <string.h&g
-
C言語で解く積配列パズル(Product Array Puzzle)とは?
配列(Array)とは、同じデータ型の要素を格納するためのコンテナです。積配列パズル(Product Array Puzzle)は、配列の全要素の積を扱う古典的なアルゴリズム問題の一つです。 このパズルでは、各要素について「その要素自身を除いた、残りのすべての要素の積」を計算します。ただし、次の2つの条件が課せられます。 除算演算子(/)を使用してはならない 結果は別の配列に格納すること 解法の考え方 この問題は、「左側の要素の積」と「右側の要素の積」という2つの配列を作成することで効率的に解けます。手順は以下の通りです。 left[i]:インデックス i より左側にあるすべての要素の積
-
C言語で半円に内接する長方形に内接する円の面積を求める方法
問題の概要 本記事では、半円に内接する長方形の中にさらに円が内接するという入れ子構造の図形について、その内接円の面積をC言語で求める方法を解説します。 まず、それぞれの図形の性質をおさらいしておきましょう。 長方形に内接する円:円は長方形の長い辺(長さ)に接します。すなわち、内接円の直径は長方形の短い辺(幅)と一致します。 半円に内接する長方形:長方形は半円の弧上の2点に接するように配置されます。 面積を求める公式 半円の半径を R とすると、半円に内接する長方形の各辺の長さは次のように表せます。 長方形の長さ = √2 R 長方形の幅(b)= R / &ra
-
C言語で長方形に内接できる最大のひし形の面積を求める方法
長方形に内接するひし形は、必ず長方形の4つの辺すべてに接触します。この性質から、最大の内接ひし形の対角線は、それぞれ長方形の縦と横の長さに一致することが導き出せます。ひし形の面積を求める考え方長方形の縦の長さを l、横の長さ(幅)を b とすると、その内部に内接できる最大のひし形の対角線の長さは次のようになります。d1 = l(縦の長さ)d2 = b(横の長さ)ひし形の面積は、2本の対角線を使った次の公式で求められます。Area = (d1 × d2) / 2ここに d1 = l、d2 = b を代入すると、Area = (l × b) / 2つまり、長方形に内接できる最大のひし形の面積は、元
-
C言語で正方形の辺の中点を繰り返し結んでできる正方形の面積を求める方法
正方形の面積は、その一辺の長さ同士の積で求められます。ここで考えるのは、ある正方形の各辺の中点を順に結ぶと新たな正方形が現れ、それを指定された回数だけ繰り返していくという図形の問題です。下の図は、正方形の辺の中点を結んで作られる内側の正方形を示したものです。内側の正方形の辺の長さの導出外側の正方形の一辺の長さを a とします。隣り合う2つの中点を結んだ線分は、底辺と高さがそれぞれ a/2 の直角二等辺三角形の斜辺になります。したがって、内側の正方形の辺の長さ L は次のように求められます。L2 = (a/2)2 + (a/2)2 L2 = a2(1/4 + 1/4) = a2/2 L = a
-
C言語で3桁のオシリス数(Osiris Number)を判定する方法
オシリス数(Osiris Number)とは、その数を構成する各桁の順列(桁の入れ替え)から作られるすべての数の合計が、元の数そのものと等しくなる数のことです。この問題では、3桁の整数 N が与えられ、その N がオシリス数であるかどうかを判定します。例入力 : N = 132 出力 : 132解説132 の各桁(1、3、2)から作られる2桁の数は、次の6つです。13、12、21、23、32、31これらの合計を求めると、合計 = 13 + 12 + 21 + 23 + 32 + 31 = 132元の数 132 と一致するため、132 はオシリス数であると判定できます。判定に使える公式3桁の数の
-
C11の_Genericキーワードとは?型に応じて動作を切り替える汎用マクロの定義方法
_Genericキーワードとは? C言語の_Genericキーワードは、データ型ごとに異なる処理を行うマクロ(MACRO)を定義するために使用される機能です。このキーワードはC11標準規格で新たに追加され、プログラマーがマクロをより効率的かつ柔軟に活用できるよう設計されています。 _Genericは、渡された式の型をコンパイル時に判定し、その型に対応する式へと置き換えます。つまり、同じマクロ名でありながら、引数の型に応じて異なる関数や処理を自動的に呼び分けることが可能になります。 基本構文 #define dec(x) _Generic((x), long double : decl, flo