読者です 読者をやめる 読者になる 読者になる

C言語

C言語でじゃんけんゲーム

以前 C# や Ruby で OOP を使ったじゃんけんゲームを作ってみましたが、同等の機能をもったそれを C言語のお勉強として作ってみました。C言語だから手続き型プログラミングということになりますが、C 初心者のためひどいコードでしょう。なるたけ改良してみ…

Ruby の C拡張で約数を求めるメソッドを書いた

なぜか Ruby 本体には、約数を求めるメソッドがないようですので、C拡張で作ってみました。以前書いた Utilsc への機能追加です。コードは必要な部分だけ載せます。全体のコードはここ です。 #include "utilsc.h" #include "math.h" VALUE divisors(VALUE s…

Linux Mint で C をコンパイルする

まず gcc が入っていなければ、 $ sudo apt-get install build-essentialで入れておく。eratosthenes.c をコンパイルしたかったら、まず cd でファイルのあるディレクトリに移り、 $ gcc eratosthenes.cでコンパイルされる。コンパイルに成功すると常に a.ou…

「なかなか収束しない級数の数値計算例」を自分もやってみた

id:Hyperion64 さんのブログの、 なかなか収束しない級数の数値計算例 - 完全無欠で荒唐無稽な夢 の記事が興味深かったので、ちょっと Ruby でやってみた。級数 の極限を求めようというのである。こういうコードでやってみた。Ruby は、任意の精度で 10 進表…

C言語の構造体を Ruby で表現してみる

C言語のいわゆる「K&R」本を読んでいたら、構造体というのはオブジェクト指向によく似ていると思った。ので、この本の第六章のスクリプト(p.155-159)を、Ruby で表現してみる。少なくともここでは、C言語の構造体が完全に Ruby の OOP に移植できている。 …

C言語のポインタ解析(Ruby)

いわゆる「K&R」本 p.148-152 のポインタ解析スクリプトを、Ruby に移植してみました。ポインタを使っているのを Ruby で書くのが留意点です。まったく Ruby らしくないので、Ruby らしく書き直すのが課題でしょう。例えばコマンドライン引数に「char(*(*x[3…

クイックソート(Ruby)

いわゆる「K&R」本(『プログラミング言語C 第2版 ANSI規格準拠』p.106)に載っている配列のクイックソートを、Ruby に移植してみました。メソッド(C言語では関数)の再帰呼び出しの例として使われています。コードは殆ど本そのままですが、C言語よりは読み…

C言語の関数の引数が配列であるときの不思議

C言語で、関数の引数に配列が入っている場合。例えば Ruby で stg = "Hello, World!" puts stg と書くのを、C言語では #include <stdio.h> #include <string.h> int main(void) { char stg[20]; strcpy(stg, "Hello, World!\n"); printf("%s", stg); return 0; } となるのか(追</string.h></stdio.h>…

エラトステネスの篩(C言語)

C言語でもやってみました(Ruby版)。 #include <stdio.h> int a[100000001] = {0}; void set_f(int i, int max) { int j; for ( j = 2; j <= (max / i); j++ ) a[i * j] = 2; return; } int main(void) { int max, i; printf("最大値:"); scanf("%d", &max); for ( </stdio.h>…