Cプログラミング

 Computer >> コンピューター >  >> プログラミング >> Cプログラミング
  1. 【C言語パズル】算術演算・関数なしで2つの数値を連結する方法

    C言語パズル:2つの数値を1つに連結せよ 今回のC言語パズルのテーマは「2つの数値を結合する」ことです。ただし、算術演算、文字列操作、その他のライブラリ関数は一切使用できません。 課題の条件は以下のとおりです。 入力 : 12 , 54 出力 : 1254 この一見シンプルながら制約が厳しい問題に対する最適解は、プリプロセッサのトークン連結演算子(##)を使ったマクロを定義することです。 トークン連結演算子(##)とは? ## 演算子は「トークンペースティング演算子」とも呼ばれ、マクロに渡された2つのトークンを1つのトークンとして連結する機能を持っています。この演算子を利用してマクロを定義すれ

  2. 【C言語入門】最初のn個の偶数の二乗和を求める2つの方法

    「最初のn個の偶数の二乗和」とは、2、4、6、8…というように続く偶数をそれぞれ2乗し、それらをすべて足し合わせた合計値のことです。例えばn=3であれば、2² + 4² + 6² = 4 + 16 + 36 = 56 となります。この計算を行うプログラムには、大きく分けて2つの実装方法があります。それぞれの特徴とコード例を見ていきましょう。方法1:ループを使って計算する最も直感的な方法は、for文などのループを使って1からnまで順番に処理していくやり方です。各反復処理の中で偶数(2×i)を求め、その2乗を合計用の変数に加算していきます。サンプルコード#include <iostream&

  3. C言語で乗算(*)と除算(/)を使わずにべき乗関数を実装する方法

    べき乗(Power)とは、同じ数を指定された回数だけ掛け合わせた結果のことです。たとえば 5n であれば、「5 × 5 × 5 …」と n 回繰り返した値になります。通常、べき乗の計算には乗算演算子(*)や除算演算子(/)を使用しますが、これらを使わずに実装することも可能です。その鍵となるのがネストされたループ(二重ループ)です。乗算は「同じ数を繰り返し加算する」ことで表現できるため、加算処理を n 回繰り返すループ構造を組み合わせることで、べき乗の計算を実現できます。アルゴリズムの考え方具体的な手順は以下の通りです。底の値 a を初期値として answer に設定します。外側のループで、指数

  4. C言語で最初のn個の自然数の二乗和を求める方法

    最初のn個の自然数の二乗和とは、1からnまでの各整数をそれぞれ2乗し、その合計を求めたものです。入力 − 5出力 − 55説明 − 12 + 22 + 32 + 42 + 52 = 55この二乗和を求める方法は主に2つあります。1つはループ処理を使う方法、もう1つは数学の公式を使う方法です。それぞれ詳しく見ていきましょう。方法1:ループを使って求めるfor文で1からnまで順に数値を取り出し、それぞれの2乗を計算して合計用の変数に加算していきます。処理の流れが直感的で理解しやすいのが特徴です。サンプルコード#include <iostream> using namespace std

  5. C/C++プログラミング:階乗の末尾に連続するゼロの個数を数える方法

    階乗の値の末尾に連続するゼロ(後続ゼロ)の個数を求めるには、その数の因数に含まれる「2」と「5」の個数を数えます。これは、2×5=10という組み合わせが、階乗の末尾にゼロを1つ生み出すためです。 例:7の階乗の場合 7の階乗(7!)は5040であり、末尾のゼロは1個です。 ロジックに基づいて確認してみましょう。7! = 2×3×4×5×6×7 であり、因数のうち2は3個、5は1個含まれています。ペアにできる2と5の組み合わせは1組だけなので、末尾のゼロの個数は1個となります。 効率的なアルゴリズム:5の個数だけを数える 階乗の因数において、2の個数は必ず5の個数以上になります。そのため、

  6. フォーク爆弾とは?BASHとC言語での実装例を徹底解説

    フォーク爆弾(Fork Bomb)は、Linuxベースのシステムを標的とするDoS(Denial of Service/サービス拒否)攻撃の一種です。fork()システムコールを無限回呼び出し続けることで、システムのメモリやプロセステーブルを埋め尽くし、最終的にマシン全体を停止させる悪意あるプログラムです。 BASHによるフォーク爆弾 BASHで記述されたフォーク爆弾は、わずか十数文字という短いコードで構成されていることでも有名です。 :(){ :|:& };: コードの解説 この一見不可思議なコードは、次のように分解して理解できます。 :( ) — 「:」という名前の関数を定義していま

  7. 【C言語】入力した数値の一の位を求め、それを割り切る数を表示するプログラム

    本記事では、C言語を用いて「入力された数値の一の位を取り出し、その一の位を割り切ることができる数をすべて表示する」プログラムの作成方法を解説します。 入力 − N = 326 出力 − 一の位は 6。6 を割り切る数は 2 と 3。 一の位を求める基本テクニック 任意の整数の一の位は、その数を 10 で割った余り(N % 10)を計算するだけで簡単に取得できます。 例えば、数値 N = 326 に対して「326 % 10」を計算すると余りの 6 が返され、これがまさに一の位です。剰余演算子(%)は桁操作の基本となる重要な演算子なので、覚えておくとさまざまな場面で役立ちます。 アルゴリズム F

  8. C言語で1/nの最初のk桁を出力する方法|浮動小数点数を使わない実装を解説

    整数 n を入力し、1/n の計算結果を指定した桁数(k)まで小数として出力するプログラムを考えます。浮動小数点数(float や double)を使えば簡単に実現できますが、ここでの課題は浮動小数点数を使わずに実装することです。 入力:n=5、k=5出力:20000 これは、n=5、k=5 の場合、1/5 = 0.20000 という計算結果を小数点以下 5 桁まで表示することを意味します。 アルゴリズム この問題は、割り算の筆算(長除法)の仕組みをそのままシミュレートすることで解決できます。各ステップでは、「現在の余り × 10」を n で割ることで次の桁を求め、その余りを次のステップへ引き

  9. if文やswitch文を使わずに各桁の数字を英語の単語として出力するCプログラム

    与えられた数値を英語の単語として出力するプログラムを考えてみましょう。switch文を使えば0から9までのケースを列挙するだけで簡単に実装できますが、ここでの課題は、if文やswitch文を一切使わずにこれを実現することです。入力 − N=900出力 − NINE ZERO ZEROこの課題は、0から9までの数字に対応する英単語をあらかじめ格納したポインタ配列を作成しておくことで解決できます。各桁の文字から文字コード0を引けば、そのまま配列のインデックスとして利用できるのがポイントです。アルゴリズムSTART ステップ1 → int型変数num、i、および{ZERO, ONE, TWO, TH

  10. C言語プログラム:連続する「00」「111」を避けて、N個の0とM個の1を出力する方法

    N個の「0」とM個の「1」を組み合わせて数列を作ることを考えます。ただし、この数列には「00」(0が2つ連続)や「111」(1が3つ連続)という並びが含まれてはいけません。本記事では、その条件を満たす数列をC言語で出力する方法を解説します。 入力:N = 5、M = 9出力:1 1 0 1 1 0 1 1 0 1 0 1 0 1 数列が作れるための条件 まず押さえておきたいのが、数列の構成可否を判定する条件式です。次の条件がfalseである必要があります。 (m < n-1) || m >= 2 * (n + 1) この式がtrueになる場合、すなわち1が少なすぎる(m <

  11. C言語で文章から最長の回文(パリンドローム)を見つけて出力する方法

    この記事では、C言語を使って与えられた文章の中から最も長い回文(パリンドローム)を見つけ出し、画面に出力するプログラムを解説します。回文の基本的な定義から、具体的なアルゴリズム、実際のコード例、そして実行結果まで順を追って見ていきましょう。回文(パリンドローム)とは?回文とは、文字列を逆順に並べ替えても意味や読み方が変わらない単語・語句のことを指します。例:「Nitin」は文字列を逆から読んでも「Nitin」のままなので、回文です。今回の課題は、与えられた文章の中に含まれる複数の単語から、最も長い回文を特定することです。たとえば、次のような文章が与えられたとします。malayalam liem

  12. C言語プログラムで合計がk以下となるトリプレット(3つ組)を出力する方法

    要素の集合を含む配列が与えられたとき、その中から合計がk以下となるちょうど3つの要素の組み合わせ(トリプレット)をすべて見つけ出すことが課題です。問題の例入力: arr[] = {1, 2, 3, 8, 5, 4}出力: {1, 2, 3} {1, 2, 5} {1, 2, 4} {1, 3, 5} {1, 3, 4} {1, 5, 4} {2, 3, 5} {2, 3, 4}この問題では、まず配列のサイズを計算します。そして、そのサイズをもとに、外側のループ変数 i は size-2 未満まで、中間のループ変数 j は size-1 未満まで、内側のループ変数 k は size 未満までそれ

  13. continue文を使ってループを1つだけでパターンを印刷するCプログラム

    今回の課題は、continue文を活用しながら、ループをたった1つだけ使ってパターンを表示することです。通常、このようなパターンの表示には二重ループ(ネスト構造)が用いられますが、変数を上手く操作することで単一のループでも実現できます。 アルゴリズム 処理の流れは以下の通りです。外側のカウンタとして i、各行内の星の数を管理する j の2つの変数を使用します。 開始 ステップ1 → 変数iとjを宣言し、jは0で初期化。行数nは6とする ステップ2 → ループ:i=1 から i<=n まで繰り返す もし j < i ならば 「*」を出力する j

  14. C言語で指定した文字がN回出現した後の文字列を出力する方法

    課題の概要 今回の課題は、ユーザーが指定した文字が指定された回数だけ出現した後の残りの文字列を出力するC言語プログラムを作成することです。 入力 : string = {I am harsh vaid }   文字 = a   出現回数 = 2 出力 : rsh vaid これは、ユーザーが文字「a」とその出現回数「2」を指定したため、文字列中に2回目の「a」が出現した直後からの文字列が出力として表示されることを意味します。 アルゴリズム 0 ならば     IF string[i] == ch ならば       count = count - 1     End IF     Cont

  15. 【C言語】直角三角形の内接円の面積を求めるプログラム

    内接円の面積を求める考え方直角三角形の内接円(3つの辺すべてに接し、三角形の内部に位置する円)の面積を求めるには、まず内接円の半径を計算する必要があります。直角三角形の場合、内接円の半径は次のシンプルな公式で求められます。r = (P + B − H) / 2ここで、P は垂直辺(高さ)、B は底辺、H は斜辺をそれぞれ表します。内接円の面積の公式円の面積は一般に次の公式で表されます。面積 = π × r2ここで、π は 22/7 または 3.14、r は円の半径です。先ほどの半径の公式を代入すると、内接円の面積は次の式で求められます。面積 = π × ((P + B − H) / 2)2C言

  16. C++プログラムで正N角形に内接する最大の円の面積を求める方法

    正N角形に内接する最大の円とは本記事では、一辺の長さが a である正N角形に内接する最大の円(内接円)の面積を、C++プログラムで求める方法を解説します。数学的な背景と公式正n角形に内接する最大の円の半径 r は、次の公式で表されます。r = a / (2 * tan(180/n))例として、六角形(n=6)を考えてみます。この場合、中心から見た半分の角度は30度になることが数学的に知られています。したがって、円の半径は以下のように計算できます。r = a / (2 * tan(30°)) = a√3 / 2公式の導出正多角形は、中心を共有するN個の同一の二等辺三角形に分割できます。そのうちの

  17. 【C言語】対角線の長さから六角形の面積を求める方法

    六角形の面積とは六角形(ヘキサゴン)とは、6つの辺で構成される閉じた図形です。その中でも、6つの辺の長さとすべての内角が等しいものを「正六角形」と呼びます。本記事では、対角線の長さ d のみが与えられた場合に、Cプログラムを使って六角形の面積を求める方法を解説します。正六角形の内角はそれぞれ120度であり、すべての内角の合計は720度になります。面積を求める公式一辺の長さを a とすると、正六角形の面積は次の公式で表されます。Area = (3a2 √3) / 2正六角形では、最も長い対角線 d は一辺の2倍に相当するため、次の関係が成り立ちます。d = 2a つまり a = d/

  18. C言語で円に内接する正十角形の面積を求める方法

    正十角形とは、10本の辺とすべての角度が等しい多角形のことです。この記事では、円の半径 r を使って、円に内接する正十角形の面積を求める方法を解説します。円に内接する十角形の1辺の長さ余弦定理を用いると、円に内接する十角形の1辺の長さは次の式で表されます。a = r√(2 − 2cos36°)正十角形の面積を求める公式1辺の長さ a がわかれば、正十角形の面積は以下の公式で計算できます。Area = 5 × a² × (√5 + 2√5) / 2Area = 5 × (r√(2 − 2cos36°))² × (√5 + 2√5) / 2Area = (5r² × (3 − √5) × (√5

  19. 正六角形に内接する円に内接する正方形の面積を求めるC言語プログラム

    本記事では、正六角形に内接する円、さらにその円に内接する正方形の面積を求める問題を解説します。正方形の面積を計算するには、正六角形の一辺の長さと正方形の一辺の長さの関係を導き出すことが鍵となります。 数学的な解法 1. 正六角形に内接する円の半径 一辺の長さを A とする正六角形に内接する円の半径 r は、次の式で表されます。 r = A√3 / 2 これは正六角形の中心から各辺に下ろした垂線の長さ(辺心距離)に相当します。 2. 円に内接する正方形の一辺 円に内接する正方形では、その対角線が円の直径と一致します。正方形の一辺を a とすると対角線は a√2 となるため、「a√2 = 2

  20. 【C言語】正方形の中に描かれた葉の形の面積を求めるプログラム

    正方形の中の葉の面積とは?正方形の中に2つの四分円(90度の扇形)が交わってできる「葉」のような形。この面積を求めるには、図形をいくつかの部分に分解してそれぞれの面積を計算し、それらを組み合わせるのが基本的な考え方です。ここでは、葉の形を2つの同じ部分に分割して考えます。面積の計算手順まず、最初の部分 AECA の面積を求めます。これは次のように表せます。部分AECAの面積 = 四分円 AECDA の面積 − 三角形 ACDA の面積葉全体はこの部分が2つで構成されているため、最終的な公式は次のようになります。葉の面積 = 2 ×(四分円の面積 − 三角形の面積)= a2 ×(π / 2 −

Total 1445 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:27/73  20-コンピューター/Page Goto:1 21 22 23 24 25 26 27 28 29 30 31 32 33