C言語による基本的な数値計算と特殊数の探索

1. BMI(体格指数)の計算 BMIは体重(kg)を身長(m)の2乗で割った値で、健康状態の指標として広く使われます。 入力: 体重(kg)と身長(cm)をスペース区切りで1行に入力 出力: BMI値を小数点以下2桁まで表示 #include <stdio.h> int main() { int weight, height_cm; scanf("%d %d", &weight, &height_cm); double height_m = height_cm / ...

6月28日 00:30 投稿

Linux ioctlによるネットワークインタフェース情報の取得手法

ioctlシステムコールとネットワーク制御の概要 Linuxカーネルのデバイスドライバやネットワークスタックとユーザ空間プログラムが通信する際、ioctl() が標準的な制御インターフェースとして利用されます。ソケットやキャラクタデバイスなどのファイルディスクリプタに対して特定のリクエストコードを渡すことで、ネットワークインタフェースのIPv4/IPv6アドレス、MTU、リ ...

6月27日 17:29 投稿

階乗計算の実践的理解:大規模数値処理へのアプローチ

基本的な階乗計算の実装 階乗は数学における基本的な演算であり、0以上の整数nに対してn!は1からnまでの全ての整数の積として定義される。本節では、C言語を用いて非負整数の階乗を計算するシンプルな関数の実装方法について解説する。 関数プロトコルは以下の通りである。 int CalculateFactorial(const int n); この関数では、引数として渡された整数が0以上である ...

6月9日 17:35 投稿

割り込みを利用した1秒カウンターの実装

概要 8051マイコン(AT89C52等)と2桁の7セグメントLED(カソードコモン)を用いて、1秒ごとにカウントアップする簡易ストップウォッチをタイマ割り込みで実現する。 タイマ0を16ビットモードで動作させ、50msごとに割り込みを発生。20回の割り込みで1秒を計測し、カウンタ値を表示する。 ヘッダファイル (head.h) #include <reg52.h> #define uint unsigned int #d ...

6月8日 23:33 投稿

9x9 サイズのマインスイーパーゲームの設計と実装

この記事では、9x9サイズのマインスイーパーゲームの設計と実装方法について説明します。ゲームは以下の3つのファイルで構成されます。 test.c: テストロジックの実装 game.c: ゲーム関数の実装 game.h: データ型や関数宣言 まず、ゲームボードを9x9に設定し、10個の地雷を配置します。ただし、配列の境界問題を避けるため、実際には11x11の配列を使用します。 ...

6月8日 20:23 投稿

C言語におけるアドレス演算子と間接参照の使い分け

概要 C言語において、& と * はポインタ操作やメモリ管理の基本となる演算子です。これらを正しく理解することで、関数間でのデータ共有や効率的なメモリ操作が可能になります。本記事では、これらの演算子の動作原理と使用方法を具体的なサンプルコードを交えながら解説します。 アドレス取得演算子 & & は変数のメモリアドレスを取得するための演算子です。 ...

6月4日 20:01 投稿

Darknetフレームワークの基本と使用方法

Darknetフレームワークの概要 DarknetはC言語とCUDAで実装されたオープンソースの深層学習フレームワークです。その主な特徴は、依存関係がほとんどなく(OpenCVすら不要)、インストールが容易で、CPUとGPUの両方をサポートしている点です。また、高い移植性を持ちます。 Darknetを選ぶ理由 TensorFlowほど高機能ではありませんが、このシンプルさがDarknetの利点とな ...

5月31日 21:06 投稿

図書管理・日付処理・アカウント表示・連絡先リスト操作の実装

以下に4つの実験課題の実装内容を示します。 実験4:図書情報のソートと売上集計 図書情報を保持する構造体配列を用い、売上部数に基づく降順ソートと売上高の合計計算を行います。 #include <stdio.h> #include <stdlib.h> #define NUM_BOOKS 10 typedef struct { char isbn[20]; char title[80]; char author[80]; double price; in ...

5月31日 12:31 投稿

C言語によるインラインアセンブリとシステムコールの低水準実装

標準ライブラリ(libc)を一切使用せず、Linuxカーネルが提供するシステムコールをC言語のインラインアセンブリ経由で直接呼び出す手法について解説します。通常のC言語の抽象化レイヤーを介さずにプログラムのエントリーポイントから記述することで、OSとのやり取りやスタック構造を深く理解することができます。 実装コード例 以下に、`write`、`nanosleep`、`exit` の ...

5月24日 06:33 投稿

C言語プログラミング課題:関数とアルゴリズムの実装演習

1. スコア判定プログラム 成績評価を行う関数を実装します。switch文を利用してスコアの階級分けを行います。 #include <stdio.h> char get_grade(int score) { switch (score / 10) { case 10: case 9: return 'A'; case 8: return 'B'; case 7: return 'C'; case 6: return 'D'; default: return 'F'; } } int ...

5月23日 17:15 投稿