Turbo Cを用いた2次元図形の幾何変換実装

2次元図形の幾何変換は、座標変換行列を用いた行列演算によって実現されます。本記事では、Turbo C環境下で平行移動、回転、拡大縮小、対称変換を実装する方法を解説します。各変換処理は、基準座標系を(540, 240)とし、三角形の頂点座標を変換して描画します。 回転処理 90度順時針回転を行列演算で実装します。以下はそのコード例です。 #include <stdio.h> #inclu ...

5月23日 02:02 投稿

C言語における関数ポインタと関数ポインタを返す関数の仕組みと実装

関数ポインタについて 関数ポインタ(Function Pointer)は、コードメモリ上の関数のアドレスを格納するための変数です。これを利用することで、プログラムの実行時に動的に呼び出す関数を切り替えることが可能になります。主にコールバック処理やイベント駆動型の設計、あるいは関数テーブル(ジャンプテーブル)の実装において非常に重要な役割を果たします。 実装手順 ...

5月22日 21:02 投稿

メモリ操作関数:memcpy, memmove, memset, memcmp

memcpyの使い方と実装 memcpyは、指定されたバイト数分のデータをソースからデスティネーションへコピーする関数です。特に文字列終端文字'\0'を特別扱いせず、純粋にバイト単位でコピーを行います。 使用時の注意点 コピー元とコピー先のメモリ領域が重複している場合、挙動は未定義です。 バイト単位でコピーするため、型の違いによる影響はありません(ただし無効なア ...

5月21日 22:18 投稿

プログラミング演習問題集

タスク1 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 #define COUNT 5 5 #define MIN_A 397 6 #define MAX_B 476 7 #define MAX_C 21 8 int main() { 9 int index; 10 int group_id, student_num; 11 srand(time(NULL)); // システム時刻をシード値に設定 12 index = 0; 13 while(index < COUNT) { 14 group_id = ra ...

5月21日 20:21 投稿

スタックとキューを用いたプログラミング課題解説

1. 多項式微分計算 係数と指数のペアを読み込み、微分計算を行い結果を出力する。 入力例: 3 4 -5 2 6 1 -2 0 出力例: 12 3 -10 1 6 0 実装例: #include <iostream> using namespace std; int main() { int coeff, exp; bool first = true; while(cin >> coeff >> exp) { if(exp != 0) { if(!first) cout top)] = ch; } } ...

5月20日 22:32 投稿

挿入ソートの原理と実装

挿入ソート(Insertion Sort)は、配列を部分的に整列させながら全体をソートしていくアルゴリズムである。既に整列された部分に対して、次の要素を適切な位置に挿入することで、徐々に整列範囲を広げていく。 アルゴリズムの流れ 最初の要素を「整列済み」とみなす。 次の要素を取り出し、整列済み部分の末尾から先頭に向かって比較を行う。 取り出した要素が比較 ...

5月19日 20:41 投稿

進数とビット演算の基礎

進数システムの概要 コンピュータ科学の基礎として、2進数(バイナリ)、8進数(オクタル)、10進数(デシマル)、16進数(ヘキサデシマル)などの位取り記数法があります。これらはすべて「基数」が異なるだけで、基本的な考え方は共通しています。 各進数での数値表現例(15の場合) 2進数: 1111 8進数: 17 10進数: 15 16進数: F 10進数の理解 10進数では、各 ...

5月19日 03:54 投稿

C言語の基礎演習問題

1.整数の階乗を計算する。 #include<stdio.h> int main() { int i =1; int n=0; int ret=1; scanf("%d",&n); for(i=1;i<=n;i++) { ret=ret*i; } printf("%d",ret); return 0; } 2.1!+2!+3!+4!+5!+6!+...+10!の和を求める。 #include<stdio.h> int main() { int i =1; int n=0; int j=1; for(j=1;j<=10;j ...

5月19日 00:14 投稿

ftok関数

ftok関数の概要 UnixやLinux環境において、ftok関数はプロセス間通信(IPC)機構で使用される一意のキーを生成するために使われます。このキーは、メッセージキュー、セマフォ、共有メモリなどのIPCリソースを識別するために利用されます。ftokという名前は「file to key」の略称に由来します。 関数のプロトタイプ #include <sys/ipc.h> key_t ftok(const char *p ...

5月18日 21:44 投稿

LeetCode解説:216.組合せ総和IIIと17.電話番号の文字列組み合わせ [バックトラッキング編]

LeetCode 216.組合せ総和III 問題リンク:216.組合せ総和III 問題説明 1から9までの数字からk個の数字を選び、その合計がnとなるすべての有効な組み合わせを見つけます。以下の条件を満たす必要があります: 使用できる数字は1から9まで 各数字は最大で1回まで使用可能 結果には重複する組み合わせを含めない 例1: 入力:k = 3, n = 7 出力: [[1,2,4]] 説明: 1 + 2 + ...

5月18日 15:03 投稿