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 投稿