C言語初級演習問題の解答例

実験1:乱数を用いた学籍番号生成 #include <stdio.h> #include <stdlib.h> #include <time.h> #define COUNT 5 #define BASE_LOW 397 #define BASE_HIGH 376 #define BASE_ALT 21 int main() { int iteration = 0; int type, extra; srand((unsigned)time(NULL)); while (iteration < COUNT) { type = rand() % 2; ...

7月29日 03:22 投稿

FreeRTOSにおけるタスクハンドルの正体と二重ポインタの重要性

タスクハンドルとは何か? FreeRTOSを扱う際、タスクの作成には「タスクハンドル」が必要です。このハンドルは、タスクの制御情報を保持する「タスク制御ブロック(TCB)」へのポインタです。タスク作成APIの引数として、このハンドルを渡すことで、作成されたタスクの参照を取得できます。 タスクの動的生成例 以下は、FreeRTOSでタスクを動的に生成するコード例で ...

7月29日 02:02 投稿

C言語構造体とアルゴリズムの実践演習

課題4: 書籍販売データ処理 ソースコード 1 #include <stdio.h> 2 #define MAX_BOOKS 10 3 4 typedef struct { 5 char isbn[20]; // ISBN番号 6 char title[80]; // 書籍タイトル 7 char writer[80]; // 著者名 8 double price; // 価格 9 int quantity; // 販売冊数 10 } Publication; ...

7月27日 22:11 投稿

単方向連結リストの実装と操作

目録 定義 単方向連結リストの実装 ヘッダーノードなし ヘッダーノードあり 単方向連結リストの空判定(Empty) ヘッダーノードなし ヘッダーノードあり 単方向連結リストの位置指定挿入(ListInsert) ヘッダーノードなし ヘッダーノードあり 指定ノードの後方挿入操作(InsertNextNode) 指定ノードの前方挿入操作(InsertPriorNode) 単方向連結リストの位置指定削除(L ...

7月27日 01:05 投稿

データ構造とアルゴリズム(C言語):線形リストの実装と応用

線形リスト(linear list)は、同じ特性を持つn個のデータ要素の有限シーケンスです。線形リストは実際のアプリケーションで広く使用されているデータ構造であり、一般的な線形リストには順序リスト、連結リスト、スタック、キュー、文字列などがあります。 線形リストは論理的には線形構造であり、連続した直線状の構造を持ちます。しかし、物理的な構造としては必ずしも ...

7月26日 17:02 投稿

C言語のアルゴリズムトレーニングキャンプ 第4週:二分探索木の操作

235. 二分探索木の最近共通先祖 二分探索木(BST)の根ノードと二つの指定ノードが与えられた場合、その二つのノードの最近共通先祖を返す関数を作成します。 struct TreeNode* findCommonAncestor(struct TreeNode* tree, struct TreeNode* n1, struct TreeNode* n2) { if (tree == NULL) { return NULL; } if (tree->val > n1->val && tree->val > ...

7月26日 02:58 投稿

C言語初学者向けの実践プログラムと核心概念の解説

基本入出力と制御構造 初期学習段階では、標準入出力と基本的な制御フローをマスターすることが重要です。 #include <stdio.h> int main() { // 飛行機のASCIIアート printf(" ** \n"); printf(" ** \n"); printf("************\n"); printf("************\n"); printf(" * * \n"); printf(" * * \n"); ...

7月25日 17:40 投稿

2つのキューを使用したスタックの実装

2つのキューを使用したスタックの実装 問題分析 この問題は、配列やリンクリストでスタックを実装するのではなく、キューを使用してスタックを実装することを求めています。キューとスタックの関係は逆で、スタックは後入れ先出し(LIFO)の特性を持つのに対し、キューは先入れ先出し(FIFO)の特性を持っています。したがって、この問題はキューの性質をスタックの性質 ...

7月24日 20:46 投稿

C/C++におけるvolatileキーワードの役割と使用例

1. コンパイラの最適化を防ぐ コンパイラは、プログラムの実行効率を上げるために、見た目上冗長なコードを削除したり、最適化したりすることがあります。しかし、この最適化によって、特定の状況下で意図しない動作を引き起こすことがあります。volatileキーワードは、コンパイラに対して「この変数の値は予期せず変更される可能性があるため、最適化しないでください」と ...

7月23日 22:20 投稿

C言語によるヒープと二分木の実装

ヒープデータ構造の実装 ヘッダファイル定義 #pragma once #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdbool.h> typedef int HeapValue; typedef struct MinHeap { HeapValue* elements; int count; int capacity; } MinHeap; void HeapInitialize(MinHeap* heap); void HeapDestroy(MinHeap* heap) ...

7月23日 19:21 投稿