プログラムの各行に説明を書いて頂けませんか?
下記に記載したプログラムは一定時間、時刻を周期Tで割った物を整数化する事で得た周期外時刻分を引いて周期内数値に変え、周期前半なら1後半なら-1を格納しているだけだそうです。
このプログラムを理解したいのですが、各行に説明が書いてないのでいまいちよくわかりません。
なので、どなたか各行に「//」を書いたのでその横にその行のソースの説明を書いて頂けませんか?
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define rint(x) ((int)((x)+0.5))//
#define trunc(x) ((int)(x))//
int main(void){//
/* (1) definition */
double tstep = 0.01, last_time = 5.00;//
int max_step; max_step = rint(last_time/tstep);//
double i, REtime, time, *output = new double[max_step];//
output[max_step], time;//
double T = 1.0; /* wave cycle *//
int j=0, multi;//
/* (2) generating square wave */
// amplitude : 1
// time cycle : T = 1.0[sec]
// time step : 0.01[sec]
// last time : 5[sec]
for (time = 0.0; time < (last_time+tstep); time = time+tstep){//
i = time/T; multi = trunc(i);//
REtime = time - T*multi;//
if (REtime <= T/2.0)//
output[j] = 1;//
else//
output[j] = -1;//
j = j+1;//
}
/* (3) file out */
int t1;//
FILE *f1;//
f1 = fopen("square.csv","w");//
for(t1 = 0; t1 < 500; t1++)//
fprintf(f1,"%f,\n",output[t1]);//
fclose(f1);//
return 0;
}