Cプログラミング

 Computer >> コンピューター >  >> プログラミング >> Cプログラミング
  1. C言語で学ぶマージソートの仕組みと実装方法

    ソート(整列)とは、データの要素を昇順または降順に並べ替える処理のことです。本記事では、C言語における代表的なソート手法のひとつである「マージソート」について、その基本概念から実際のコードによる実装方法まで、初心者にもわかるように丁寧に解説します。C言語で使われる主なソート手法C言語では、主に以下の5つのソート手法が広く知られています。バブルソート(交換ソート)選択ソート挿入ソート(線形ソート)クイックソート(分割交換ソート)マージソート(外部ソート)マージソートとはマージソートは「分割統治法(Divide and Conquer)」に基づいたソートアルゴリズムです。配列を半分ずつに分割してい

  2. 【C言語】カレントディレクトリ内のすべてのファイルとフォルダを一覧表示するプログラムの作り方

    ファイルとはファイルとは、レコード(データ)の集まりであり、ハードディスク上にデータを恒久的に保存するための場所のことです。C言語では、標準ライブラリが提供するコマンド(関数)を使うことで、さまざまな方法でファイルにアクセスできます。ファイルに対する主な操作C言語でファイルに対して実行できる基本操作は、以下の5つです。ファイル名の指定(ネーミング)ファイルを開くファイルから読み込むファイルへ書き込むファイルを閉じる基本構文ファイルポインタの宣言とファイルを開くための構文は、それぞれ以下のとおりです。FILE *ファイルポインタ;宣言の例:FILE *fptr;ファイルポインタ = fopen(

  3. C言語のポインタを使って2つの行列を乗算する方法をわかりやすく解説

    ポインタ(pointer)とは、別の変数のメモリアドレスを格納するための変数です。C言語ではポインタを使うことでメモリを直接操作でき、効率的で高速なプログラムを作成できます。 ポインタの特徴 メモリ空間を節約できる。 メモリ上の位置へ直接アクセスするため、実行速度が速い。 メモリの動的な割り当てと解放が可能になり、メモリを効率的に利用できる。 リンクリストや木構造などのデータ構造と組み合わせて使用される。 ポインタの宣言・初期化・アクセス まず、次のような通常の変数宣言を考えてみましょう。 int qty = 179; この変数はメモリ上では、「qty」という名前、値「179」、そして固有

  4. math.hライブラリを使ってコサイン値とサイン値を求めるC言語プログラム

    問題概要0から150までの角度を10刻みで変化させながら、それぞれの角度に対応するコサイン値(cos)とサイン値(sin)を求めて表示するプログラムを作成します。解決の考え方C言語では、標準ヘッダーファイル math.h をインクルードすることで、cos() や sin() といった三角関数を利用できます。これらの関数は引数としてラジアンを受け取るため、角度をラジアンに変換してから渡す必要があります。本プログラムでは、あらかじめ #define によって円周率 PI と最大角度 MAX を定義しておき、次の式でラジアン値を計算します。x = (PI / MAX) * angle;コサイン値を求

  5. C言語のマクロ関数(#define)を使って営業担当者の給与を計算するプログラム

    問題あるノートパソコン製造会社では、営業担当者に対して以下のような月次報酬ポリシーを設けています。最低基本給:3,000.00パソコン1台販売ごとのボーナス:200.00月間売上総額に対するコミッション:5%ノートパソコンの価格は常に変動するため、毎月月初にその月の販売価格が固定されることになっています。解決方法ボーナスおよびコミッションを求めるためのロジックは以下の通りです。bonus = BONUS_RATE * quantity ;commission = COMMISSION * quantity * price ;総支給額(グロス給与)は、次の式で計算できます。総支給額 = 基本給

  6. 【C言語】printf関数で文字と文字列をさまざまな書式で出力する方法

    C言語では、printf関数と書式指定子(フォーマット指定子)を組み合わせることで、文字や文字列をさまざまな形式で柔軟に出力できます。本記事では、その基本的な手順(アルゴリズム)と、実際に動作するサンプルコードおよび実行結果をわかりやすく解説します。 処理の手順(アルゴリズム) C言語で文字と文字列を異なる形式で出力するためのアルゴリズムは、以下の通りです。 ステップ1: 出力する1文字を読み込む。 ステップ2: コンパイル時に名前(文字列)を定義する。 ステップ3: 書式指定子を使って、文字をさまざまな形式で出力する。 printf(%c\n%3c\n%5c\n, x, x, x); pr

  7. 【C言語】パソコン価格の値の範囲(レンジ)と平均コストを計算するプログラム

    問題 個人用システム(パソコン)は、販売業者ごとに異なる価格で販売されています。 ここで、いくつかの業者が提示した価格リスト(単位:100)を見てみましょう。 25.00、30.50、15.00、28.25、58.15、37.00、16.65、42.00、68.45、53.50 解決策 この価格データから、平均コストと値の範囲(レンジ)を計算します。 一連の数値の中で最大値と最小値の差を「範囲(レンジ)」と呼びます。つまり、範囲 = 最大値 − 最小値です。 まずは、データの中から最大値と最小値を見つけましょう。 Cプログラムの例 以下は、パソコンの価格の範囲と平均コストを計算するCプログラ

  8. C言語で1×1〜12×10の掛け算九九表を表示するプログラム

    問題 以下のような形式で、1×1から12×10までの掛け算九九表を表示するC言語プログラムを作成してください。 1 2 3 4 5 6 7 8 9 10 2 4 6 8 ……………….20 3 6 9……………………….30 4 8 12 16………………..40 - - - 12 24……………………..120 解決方法 九九表を表示するには、do while文を二重(ネスト)構造にして使用します。 このプログラムで使われるロジックは次のとおりです。 内側のループ: 変数 column によって制御され、外側のループが1回実行されるたびに10回繰り返されます。各行(横一列分)の出力を担当

  9. Cプログラムで指定されたリストの中央値を求める方法

    リストの要素を大きさの順に並べたとき、全体を同じ個数の2つの部分に分ける中央の値を中央値(メディアン)と呼びます。 要素数が奇数の場合には中央の値がちょうど1つだけ現れますが、偶数の場合には中央に2つの値が並ぶことになります。 そのため、偶数個の要素に対する中央値は「中央にある2つの値の平均」として定義されます。 アルゴリズム 中央値を計算するための手順は、以下のようになります。 要素の個数を数えながら、配列へ値を読み込みます。 値を昇順に並べ替えます。 中央値を計算します。 並べ替え(ソート)のロジック 中央値を求める前に数値を並べ替えるための処理は、隣り合う要素を比較しながら入れ替え

  10. C言語で標準偏差を計算するプログラムの書き方

    標準偏差とは 標準偏差(Standard Deviation)は、データが平均値からどれだけばらついているかを測定するための基本的な統計指標です。値が平均の近くに集中していれば標準偏差は小さくなり、平均から大きく外れた値が多いほど標準偏差は大きくなります。 標準偏差を求める数学的な公式は以下のとおりです。 s = √(分散) ここで、分散と平均(m)はそれぞれ次のように定義されます。 分散 = (1/n) × Σ (xi − m)2 (i = 1 ~ n) m = 平均 = (1/n) × Σ xi (i = 1 ~ n) アルゴリズム 与えられた数値群の標準偏差を計算するには、以下の手順に

  11. 文字列関数を使って名前をアルファベット順にソートするCプログラムの書き方

    はじめにC言語では、strcmpやstrcpyなどの標準文字列関数を組み合わせることで、実行時に入力された複数の名前(文字列)を簡単にアルファベット順に並べ替えることができます。本記事では、古典的なソートアルゴリズムである「バブルソート」の手法を使い、ユーザーが入力した名前を五十音ではなくアルファベット順(辞書順)に整列するプログラムを紹介します。問題実行時にユーザーから入力された複数の名前を受け取り、バブルソートの手法を用いてアルファベット順に並べ替えて表示すること。解決方法名前をアルファベット順に出力するためのロジックは以下の通りです。隣り合う2つの文字列をstrcmp関数で比較します。戻

  12. C言語でキューに要素を挿入する方法を徹底解説!基本概念からサンプルコードまで

    データ構造とは、データを体系的かつ効率的に整理・格納するための仕組みです。データ構造は、その構成方法によって大きく以下の2種類に分類できます。線形データ構造 − データが一直線上に順序立てて配置される構造です。例として、配列、構造体、スタック、キュー、連結リストなどが挙げられます。非線形データ構造 − データが階層的・網目的に配置される構造です。例として、木(ツリー)、グラフ、集合、テーブルなどが挙げられます。キュー(Queue)とはキューは線形データ構造の一つで、後端(リア/rear)から要素を挿入し、前端(フロント/front)から要素を削除するという特徴を持っています。キューにおけるデー

  13. C言語でキューから要素を削除する方法を解説!基本概念から実装・実行結果まで

    データ構造とは、データを構造化された方法で整理・管理する仕組みのことです。データ構造は、大きく次の2種類に分けられます。線形データ構造 − データが一列(線形)に並ぶ形で整理されます。例:配列、構造体、スタック、キュー、連結リスト非線形データ構造 − データが階層的に整理されます。例:木、グラフ、集合、テーブルキュー(Queue)とはキューは線形データ構造の一種で、要素の挿入(追加)は後端(rear)から行い、削除(取り出し)は前端(front)から行います。キューの処理順序は FIFO(First In First Out:先入れ先出し) です。最初に入れた要素が最初に取り出されるのが最大の

  14. 連結リスト(リンクリスト)の要素削除を徹底解説!C言語での実装例つき

    連結リスト(リンクリスト)は動的メモリ割り当てを使用するデータ構造です。そのため、データの増減に応じてリストのサイズが自動的に伸縮します。連結リストは「ノード」の集合として定義され、各ノードは次の2つの部分で構成されています。データ部:実際の値を格納する部分リンク部:次のノードへのポインタを格納する部分データ・リンク・連結リスト全体のイメージは下図の通りです。連結リストに対する主な操作C言語における連結リストの基本操作には、次の3種類があります。挿入削除走査(トラバーサル)本記事では、この中でも特に重要な「削除」の処理について、具体例とともに詳しく解説します。削除の仕組み連結リストからノードを

  15. C言語で連結リストを使ったスタックの実装方法を徹底解説

    はじめにスタック(Stack)は「後入れ先出し(LIFO:Last In First Out)」という特徴を持つ基本的なデータ構造です。配列ではなく連結リスト(リンクリスト)を使ってスタックを実装すると、メモリを動的に確保できるため、スタックオーバーフローやスタックアンダーフローといった問題を効果的に回避できます。C言語におけるスタックに対する主な操作は以下の2つです。Push(プッシュ) … スタックの先頭に要素を追加するPop(ポップ) … スタックの先頭から要素を取り出すこの記事では、それぞれの操作の仕組みと、実際に動作するC言語のサンプルプログラムを詳しく解説します。Push(プッシュ

  16. C言語で連結リストを使ったキューの実装方法【挿入・削除・表示を解説】

    連結リスト(リンクリスト)を使ってキューを実装すれば、配列ベースの実装で問題になりやすい「キューのオーバーフロー(あふれ)」や「キューのアンダーフロー(枯渇)」を効果的に回避できます。 キューはFIFO(First In First Out:先入れ先出し)方式のデータ構造です。C言語では、連結リストを利用することでメモリを動的に確保しながら柔軟なキューを実装できます。連結リストによるキューに対する主な操作は次の2つです。 挿入(Insert / Enqueue) 削除(Delete / Dequeue) 挿入(Enqueue) 挿入は、キューの末尾(rear側)に新しい要素を追加する操作で

  17. C言語の線形探索で配列内の最小値を見つける方法を徹底解説

    C言語の探索アルゴリズムの種類C言語で使われる代表的な探索手法は、大きく分けて以下の2つです。線形探索(リニアサーチ)二分探索(バイナリサーチ)線形探索とは線形探索は、配列の先頭から順番に要素を一つずつ比較しながら目的のキーを探す、最も基本的な探索アルゴリズムです。データがソート(整列)されていなくても使用できる実装が非常にシンプルで理解しやすい欠点:データ数が多いほど処理時間が長くなり、システムの効率を低下させる可能性がある入出力のイメージは以下の通りです。入力:ソートされていない要素のリスト、探索キー出力:・成功 … キーが見つかった場合・失敗 … キーが見つからなかった場合例1:線形探索

  18. C言語で構造体変数を比較するプログラムの書き方|宣言・初期化の基礎とサンプルコード

    C言語における構造体(structure)とは、int型やchar型など、異なるデータ型の変数をひとつの名前のもとにまとめて扱えるようにしたデータ構造です。関連するデータをひとまとめに管理できるため、プログラムの可読性と保守性が向上します。 構造体の宣言と初期化 構造体を宣言するときの一般的な形式は以下のとおりです。 struct tagname{ datatype member1; datatype member2; ... datatype member n; }; 各要素の意味は次のとおりです。 struct … 構造体を定義するためのキーワード(予約語

  19. C言語入門:構造体の配列と構造体内の配列の違いを徹底解説

    C言語プログラミングにおいて、構造体の最も一般的な活用例のひとつが構造体の配列です。 構造体の配列を宣言するには、まず対象となる構造体を定義し、続いてその型の配列変数を定義します。 例えば、次のように記述します。 struct book b[10];// book型の構造体配列(要素数10) 例1:構造体の配列を使ったCプログラム 以下は、構造体の配列を利用したCプログラムの例です。3人の学生について、各科目の点数と合計点を管理しています。 struct marks{ int sub1; int sub2; int sub3; int total; }; mai

  20. C言語のローカル静的変数とは?特徴と使い方を実例付きで解説

    ローカル静的変数(local static variable)とは、staticキーワードを付けて宣言されたローカル変数で、宣言された関数の呼び出しが終了しても寿命が尽きないことが最大の特徴です。その寿命はプログラム全体の実行が終わるまで続きます。また、すべての関数呼び出しで同じ1つの実体を共有するため、前回の呼び出しで代入した値が次回の呼び出し時にも引き継がれます。ローカル静的変数の主な特徴関数の実行が終わっても値が保持されるプログラム終了までメモリ上に存在し続けるすべての関数呼び出しで同じ変数を共有する明示的に初期化しない場合、デフォルト値は0になるスコープ(可視範囲)は宣言されたブロック

Total 1445 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:67/73  20-コンピューター/Page Goto:1 61 62 63 64 65 66 67 68 69 70 71 72 73