精華區beta SetupBBS 關於我們 聯絡資訊
/* *發信人: wsyfish.bbs@fpg.m4.ntu.edu.tw (等待中的魚魚站長), 看板: SobVersion *標 題: [util]站上星座統計 horoscope.c *發信站: 小魚的紫色花園 (Fri Sep 5 12:52:13 1997) *轉信站: sob!news.civil.ncku!fpg */ /*-------------------------------------------------------*/ /* util/horoscope.c ( NTHU CS MapleBBS Ver 2.36 ) */ /*-------------------------------------------------------*/ /* target : 站上星座統計 */ /* create : 97/09/05 */ /* update : 97/09/05 */ /*-------------------------------------------------------*/ /* 本程式由 wsyfish (wsyfish.bbs@fpg.m4.ntu.edu.tw) 參考 usage.c 修改完成 */ #include "bbs.h" #define DOTPASSWDS "/home/bbs/.PASSWDS" struct userec cuser; main() { int i, j; FILE *fp; int max, item, maxhoroscope; int act[12]; char *name[13] = {"牡羊", "金牛", "雙子", "巨蟹", "獅子", "處女", "天秤", "天蠍", "射手", "摩羯", "水瓶", "雙魚", "" }; char *blk[10] = { " ","▏", "▎", "▍", "▌", "▋","▊", "▉", "█", "█", }; fp=fopen(DOTPASSWDS, "r"); memset(act, 0, sizeof(act)); while((fread(&cuser, sizeof(cuser), 1, fp)) >0 ) { switch (cuser.month) { case 1: if (cuser.day <=19) act[9]++; else act[10]++; break; case 2: if (cuser.day <=18) act[10]++; else act[11]++; break; case 3: if (cuser.day <=20) act[11]++; else act[0]++; break; case 4: if (cuser.day <=19) act[0]++; else act[1]++; break; case 5: if (cuser.day <=20) act[1]++; else act[2]++; break; case 6: if (cuser.day <=21) act[2]++; else act[3]++; break; case 7: if (cuser.day <=22) act[3]++; else act[4]++; break; case 8: if (cuser.day <=22) act[4]++; else act[5]++; break; case 9: if (cuser.day <=22) act[5]++; else act[6]++; break; case 10: if (cuser.day <=23) act[6]++; else act[7]++; break; case 11: if (cuser.day <=22) act[7]++; else act[8]++; break; case 12: if (cuser.day <=21) act[8]++; else act[9]++; break; } } fclose(fp); for (i = max = maxhoroscope = 0; i < 12; i++) { if (act[i] > max) { max = act[i]; maxhoroscope = i; } } item = max / 30 + 1; if ((fp = fopen("etc/horoscope", "w")) == NULL) { printf("cann't open etc/horoscope\n"); return 1; } for(i = 0;i < 12;i++) { fprintf(fp," _[1;37m%s座 _[0;36m", name[i]); for(j = 0; j < act[i]/item; j++) { fprintf(fp,"%2s",blk[9]); } /* 為了剛好一頁 */ if (i != 11) fprintf(fp,"%2s _[1;37m%d_[m\n\n",blk[(act[i] % item) * 10 / item], act[i]); else fprintf(fp,"%2s _[1;37m%d_[m\n",blk[(act[i] % item) * 10 / item], act[i]); } fclose(fp); }