とりあえずサンプルコードを記す。
公式サイトより。
/** * CodeVS 2012 C sample */ #include#include #include #include int main(){ int i,j,k; int wid,hei,size,sum,step; int*** pack; char endstr[1024]; srand( (unsigned)time(0)); scanf("%d %d %d %d %d",&wid,&hei,&size,&sum,&step); pack = (int***)malloc(step * sizeof(int**)); //pack(:,:,:)=zeros(length(step),length(step),length(step)); for(i=0;i
C言語ってMATLABに比べてかなり複雑。そして行列の計算が面倒くさい。
上から見ていく。
/** * CodeVS 2012 C sample */ #include#include #include #include
/*はコメントを表す。matlabでは%、%{ %}で書ける。
#includeなんちゃらは呪文みたいなもんらしい。気にしないでおこう。
int main(){ (中略) return0; }
メインルーチンはここか。
int i,j,k; int wid,hei,size,sum,step; int*** pack; char endstr[1024];
変数の型を指定しているらしい。intは整数。 int*** |< というのは三次元配列として宣言すること。
matlabの pack(:,:,:)=[ ];と似ている。char は文字列だっけ。
srand( (unsigned)time(0)); scanf("%d %d %d %d %d",&wid,&hei,&size,&sum,&step);
srandは乱数を初期化する命令らしい。何につかっているのか知らない。scanfは変数の読み込みだ。
ここでマップの幅、高さ、パックのサイズ、消すために必要な合計数、パックの数を読み込む。
pack = (int***)malloc(step * sizeof(int**)); //pack(:,:,:)=zeros(length(step),length(step),length(step)); for(i=0;i
packの情報を読み込む。mallocはメモリを確保するための命令。matlabでは
pack(:,:,:)=zeros(length(step),length(step),length(step));と書ける。mallocとfreeはセットでつかう
必要があるらしく、プログラムの後半にfreeが書かれてある。
for(i=0;i
重要なのはここだけ。パックがはみ出さない程度に落とす位置と回転回数をランダムに決めてる。
ランダム…。
疲れたのでおわり。