#include #include #include struct tupel{ char text[2]; int count; }; char * alloc; int i,j,l,lines; char * anfang; char * pos; char zeile[81]; int size; char test[2]; struct tupel erg[5]; struct tupel temp; int anzahl; float durch; int testin(char t[2]) { int k; for(k=0;k<5;k++) { if(erg[k].text[0]==t[0]) { if(erg[k].text[1]==t[1]) return 1; } } return 0; } int main() { FILE * in = fopen("etaoin.in", "r"); while(1) { for(i=0;i<5;i++) { erg[i].count=0; erg[i].text[0]=0; erg[i].text[1]=0; } fgets(zeile,10,in); sscanf(zeile,"%d",&lines); if(lines==0) return(0); alloc=malloc(85*lines); anfang=alloc; pos=anfang; size=0; for(i=0;ianzahl) && (i<5)) i++; if(i<5) { if(erg[i].count==anzahl) /* alphabetisch */ { if(test[0]>erg[i].text[0]) { while((test[0]>erg[i].text[0]) && (anzahl==erg[i].count) && (i<5)) i++; } if(test[0]==erg[i].text[0]) { if(test[1]>erg[i].text[1]) { while((test[1]>erg[i].text[1]) && (anzahl==erg[i].count) && (i<5)) i++; } } } if(i<5) { j=4; while(j>i) { erg[j]=erg[j-1]; j--; } erg[i].count=anzahl; erg[i].text[0]=test[0]; erg[i].text[1]=test[1]; } } } anfang++; pos=anfang; } for(i=0;i<5;i++) { durch=(erg[i].count)/((float)(size-1)); printf("%c%c %d %.6f\n",erg[i].text[0],erg[i].text[1],erg[i].count,durch); } printf("\n"); free(alloc); } fclose(in); return(0); }