#include #include #include #include using namespace std; #define N 65 //セルの最大個数 #define R 8 //ルールの表の大きさ #define MAXT 50 //繰り返しの回数 #define BUFSIZE 256 /////関数のプロトタイプ宣言////// void setrule(char *arg,int rule[]); //ルール表の初期化 void initca(int ca[]) ; //初期値の読み込み int cvalue(char ch) ; //一文字の0,1への変換 void putca(int ca[]) ; //caの状態の出力 void nextt(int ca[], int rule[]) ; //次の時刻に更新 char fout[20]="cell_automaton.txt"; ofstream ofs(fout); /*****************/ /* main()関数 */ /****************/ int main(int argc,char *argv[]) { int t; //時刻を表す反復回数のカウンタ int ca[N]={0}; //セルの並び, 初期化 int rule[R]; //ルール表 //ルール表の初期化 if(argc<2){ cout<< "使い方: ./hello ルール番号 < 初期状態ファイル.txt\n"; exit(1); } setrule(argv[1], rule); //ルール表をセット //ca[]への初期値の読み込み initca(ca); putca(ca); //ca[]の状態の出力 //時間発展の計算 for(t=0;t=0;i--) ofs<< ca[i]<<","; ofs<< "\n"; } /********************************/ /* intca()関数: 初期値の読み込み */ /*********************************/ void initca(int ca[]) { char linebuf[BUFSIZE]; cin>>linebuf; int i=0; for(i=0;i>ca[i]; } } /***********************************/ /* cvalue()関数: 1文字の0/1への変換 */ /***********************************/ int cvalue(char ch) { if(ch=='1')return 1; else return 0; } /********************************/ /* setrule()関数: ルール表の初期化 */ /*********************************/ void setrule(char *arg, int rule[]) { int ruleno; //ルール番号 int i; //ルール番号を取得 ruleno=atoi(arg); //cout<<"ルール番号"<< ruleno<<"\n"; for(i=0;i=0;i--) //cout << rule[i]; //cout <<"\n"; }