void cgen(FILE *f) { FILE *w; int t = 1; int c; w = fopen("a.c", "w"); if (!w) { perror("F*****g no space for write file"); exit(1); } printInit(w); while ((c = fgetc(f)) != EOF) { switch(c) { case '>': identline(t, w); fprintf(w, "++ptr;\n"); break; case '<': identline(t, w); fprintf(w, "--ptr;\n"); break; case '+': identline(t, w); fprintf(w, "++*ptr;\n"); break; case '-': identline(t, w); fprintf(w, "--*ptr;\n"); break; case '.': identline(t, w); fprintf(w, "putchar(*ptr);\n"); break; case ',': identline(t, w); fprintf(w, "*ptr = getchar();\n"); break; case '[': identline(t, w); fprintf(w, "while(*ptr) {\n"); t++; break; case ']': t--; identline(t, w); fprintf(w, "}\n"); break; } } printEnd(w); fclose(w); }
void gdf_eH(void *userData, const char *name) { if (((struct frag*)userData)->nesting) printEnd(userData, name); else charData_discard(); }
static void content_eH(void *userData, const char *name) { if (*name == 'r' && !strcmp(name, "rp-wrap")) return; if (((struct frag*)userData)->nesting) printEnd(userData, name); else charData_discard(); }
int main() { printStart(); printf("\n"); printf("test_create_and_destroy...\n"); test_create_and_destroy(); printf("test_thread_pool_sanity...\n"); test_thread_pool_sanity(); printf("test_agressive, this might take a while...\n"); test_agressive(); printf("test_single_thread_many_tasks...\n"); test_single_thread_many_tasks(); printf("test_many_threads_single_task...\n"); test_many_threads_single_task(); printf("test_destroy_should_wait_for_tasks #1 (more threads then tasks)...\n"); test_destroy_should_wait_for_tasks_1(); printf("test_destroy_should_wait_for_tasks #2 (more tasks then threads)...\n"); test_destroy_should_wait_for_tasks_2(); printf("test_destroy_should_not_wait_for_tasks...\n"); test_destroy_should_not_wait_for_tasks(); printf("test_destroy_twice...\n"); test_destroy_twice(); printf("test_insert_task_after_destroy #1...\n"); test_insert_task_after_destroy_1(); printf("test_insert_task_after_destroy #2...\n"); test_insert_task_after_destroy_2(); //*/ printEnd(); return 0; }
inline void ppEnd() { printEnd(); }
int main() { char R[7],*p; long long ans[50]; int i,plength,pindex,length,n,numlength,ppindex,endindex,temp; while(scanf("%s%d",R,&n)!=-1) { if(n==0) { printf("1\n"); continue; } length = strlen(R); if(length == 0 && R[0] == '0' && n == 1) { printf("1\n"); continue; } p = strchr(R,'.'); if(p == NULL) pindex = length; else pindex = p - R; plength = (length - pindex - 1) * n; for(i = 0 ; i < 50; i ++) ans[i] = 0l; length = cal(R,n,ans); numlength = length * 4; ///如果小数点的格式是.xxxxxx .001 if(plength >= numlength + getLength(ans[length])) { endindex = chechEnd(ans,length); printf("."); temp = plength - numlength - getLength(ans[length]); for(i = 0 ; i < temp; i ++) printf("0"); if(endindex == length) { temp = (int) ans[length]; while(temp%10 == 0) temp/=10; printf("%d\n",temp); } else { for(i = length - 1; i > endindex; i --) printf("%04ld",ans[i]); printEnd(ans[endindex]); } } else { ///如果小数点是xxxx. if(plength == 0) { printf("%ld",ans[length]); for(i = length - 1; i >= 0; i --) printf("%04ld",ans[i]); printf("\n"); } else { ///如果小数点是xxxx.xxxx pindex = plength % 4; ppindex = plength /4; endindex = chechEnd(ans,length); temp = (endindex>ppindex?ppindex:endindex); for(i = length; i > temp; i --) { if(ppindex == i) { if(i == length) printPoint(ans[i],pindex,'h'); else printPoint(ans[i],pindex,'m'); } else { if(i == length) printf("%ld",ans[i]); else printf("%04ld",ans[i]); } } ///如果小数点xxxx000.,XXXX000.01 if(ppindex < endindex) { if(pindex == 0) printf("0000\n"); if(pindex == 1) printf("000\n"); else if(pindex == 2) printf("00\n"); else if(pindex == 3) printf("0\n"); } else if(ppindex == endindex) { if(pindex == 0) printf("%04ld\n",ans[endindex]); else { printPoint(ans[endindex],pindex,'m'); printf("\n"); } } else printEnd(ans[endindex]); } } } return 0; }