/* stats producer - feed in text from stdin creates files containing relative frequencies of letters, digrams, trigams, tetragrams letter.txt digram.txt trigram.txt tetra.txt */ #include #include int fl[26]; int dl[26][26]; int tl[26][26][26]; int tt[26][26][26][26]; void main(void) { int i,j,k,l,ok; char s[4],c; FILE *fout; memset(fl,0,sizeof(fl)); memset(dl,0,sizeof(dl)); memset(tl,0,sizeof(tl)); memset(tt,0,sizeof(tt)); memset(s,0,sizeof(s)); while(1) { if(scanf("%c",&c)!=1) c=0; if((c>='A')&&(c<='Z')) c=c-'A'+'a'; if((!c)||((c>='a')&&(c<='z'))) { s[0]=s[1];s[1]=s[2];s[2]=s[3];s[3]=c; ok=1; } else ok=0; if(!s[0]&&!s[1]&&!s[2]&&!s[3]) break; if(ok) { if(s[0]) { fl[s[0]-'a']++; if(s[1]) { dl[s[0]-'a'][s[1]-'a']++; if(s[2]) { tl[s[0]-'a'][s[1]-'a'][s[2]-'a']++; if(s[3]) tt[s[0]-'a'][s[1]-'a'][s[2]-'a'][s[3]-'a']++; } } } } } fout=fopen("letter.txt","wt"); for(i=0;i<26;i++) fprintf(fout,"%c %d\n",i+'a',fl[i]); fclose(fout); fout=fopen("digram.txt","wt"); for(i=0;i<26;i++) for(j=0;j<26;j++) fprintf(fout,"%c%c %d\n",i+'a',j+'a',dl[i][j]); fclose(fout); fout=fopen("trigram.txt","wt"); for(i=0;i<26;i++) for(j=0;j<26;j++) for(k=0;k<26;k++) fprintf(fout,"%c%c%c %d\n",i+'a',j+'a' ,k+'a',tl[i][j][k]); fclose(fout); fout=fopen("tetra.txt","wt"); for(i=0;i<26;i++) for(j=0;j<26;j++) for(k=0;k<26;k++) for(l=0;l<26;l++) fprintf(fout,"%c%c%c%c %d\n",i+'a',j+'a' ,k+'a',l+'a',tt[i][j][k][l]); fclose(fout); }