/* process all initial blocks */ static void initial(SemDefs *glob) { Nodes *r, *s; int t; for(r = initbl; r != nil; r = r->next) { for(s = r->n->nl; s != nil; s = s->next) { t = inittype(s->n); if(t == SIINVAL || t == SINONE) error(s->n, "'%n' not a valid trigger", s->n); } initial1(r->n->n1, r->n->nl, glob); } }
/* process statement in initial block with triggers tr, creating SemInit structures for all triggers. */ static void initial1(ASTNode *n, Nodes *tr, SemDefs *glob) { Nodes *r; SemVar *v; SemInit *si, **p; int t; if(n == nil) return; switch(n->t) { case ASTASS: assert(n->n1 != nil); if(n->n1->t != ASTSYMB) { error(n, "initial1: unknown lval %A", n->n1->t); return; } assert(n->n1->sym != nil); v = n->n1->sym->semc[0]; assert(v != nil); if((v->flags & SVREG) == 0) { warn(n, "'%s' initial assignment ignored", v->sym->name); break; } for(r = tr; r != nil; r = r->next) { t = inittype(r->n); if(t == SIINVAL || t == SINONE) continue; for(p = &v->init; *p != nil; p = &(*p)->vnext) if(nodeeq((*p)->trigger, r->n, nodeeq)) { error(n, "'%s' conflicting initial value", v->sym->name); break; } if(*p != nil) continue; si = emalloc(sizeof(SemInit)); si->trigger = onlyone(ssabuildbl(r->n, glob, 0)); si->type = t; si->var = v; si->val = n->n2; *p = si; } break; case ASTBLOCK: for(r = n->nl; r != nil; r = r->next) initial1(r->n, tr, glob); break; default: error(n, "initial1: unknown %A", n->t); } }
int main() { int i,j,k,gn=1; // int g[graph_scale][graph_scale]; char filename2[5]={'.','t','x','t','\0'}; char filename3[15]="frequency.txt"; initial1(); //初始记录频繁度的矩阵 // char filename1[10]; while(gn<=graph_num) { i=48+int(gn/100); j=48+(gn-int(gn/100)*100)/10; k=48+gn-int(gn/100)*100-(j-48)*10; char filename1[15]={i,j,k,'\0'}; strcat(filename1,filename2); //记事本文件名 initial3(); initial2(); //将图的关联矩阵初始化为0 generate1(); //生成图的关联矩阵行标和列标 generate2(); //将边注入关联矩阵中 txt_out1(filename1); //将图放到记事本中 if(g[0][31]>side) { side=g[0][31]; strcpy(sname,filename1); } if(g[31][0]>dot) { dot=g[31][0]; strcpy(dname,filename1); } gn++; } txt_out2(filename3); printf("Max sidesign is %c in %s.\n",side,sname); printf("Max potsign is %c in %s.\n",dot,dname); }
void preoptim(int nv) { int answ,k,i,s,gdrive=VGA,gmode=2; long n[3]; double c[16],pv[16]; extern int npexp; extern double pexpx[],pexpy[],pexpz[]; extern char namesch[],statpexp[]; int grafcond(void); void grafica(int, double *pv); void inspect(double *pv); int search(long nsteps,long npoints,int nv,double *pv,double *c); int search1(long nsteps,long npoints,double *a,double *c); void searchpar(long *n); void eliminate(void); void initial(int nv,double *pv,double *c); void initial1(int nv,double *pv,double *c); int npgr; double correlation(double *pv); for(i=0;i<npexp;i++) statpexp[i]=1; npgr=grafcond(); initgraph(&gdrive,&gmode,""); answ=5993; do { switch(answ) { case 5993: initial(nv,pv,c); case 6512: n[2]=long(nv); searchpar(n); case 11875: if(nv==1) s=search1(n[1],n[0],pv,c); else s=search(n[1],n[0],nv,pv,c); switch(s) { case 1: puts("This is what you are searching for!"); break; case 2: puts("Continue ! Modify parameters with <p> if you want."); break; case 0: if(nv==1) { puts("Raise npoints from <p> !"); break; } default: puts("Something is bad !"); return; } break; case 12654: inspect(pv); break; case 561: initial1(nv,pv,c); break; case 4978: printf("correlation coefficient = %f\n",correlation(pv)); break; case 7777: npgr=grafcond(); case 8807: puts("YOU MUST WAIT A LITTLE !"); grafica(npgr,pv); break; case 4709: eliminate(); break; default: puts(" Initialization search Parameters Continue"); puts(" Eliminate/insert iNspect coRrelation"); puts(" Graphics graph quAlity Stop"); printf(" (i/p/c\n e/n/r\n g/a/s)\n "); } flushall(); answ=bioskey(0); } while(answ!=8051); closegraph(); puts("FINAL VALUES :"); for(k=0;k<nv;k++) { printf("%2d ",k); for(i=0;i<10;i++) printf("%c",namesch[10*k+i]); printf(" %12.7e\n",pv[k]); } return; }