|
도저히 모르겠습니다;;
#define NUM_REC 52
#define M 5
#define TRUE 1
#define FALSE 0
int all_frozen(int * f) {
int i;
for(i=0;i if(f[i]==FALSE)
return FALSE;
}
return TRUE;
}
void get_new_file_name(char *n, int a) {
char temp[5];
strcpy(n, "ofile");
itoa(a, temp, 10);
strcat(n,temp);
strcat(n,".dat");
}
int get_smallest(int *b, int *f) {
int i, s=0;
for(i=0;i if(f[i]==FALSE) {
s=i;
break;
}
for(i=0; i if(b[i] s=i;
return s;
}
void main() {
int i, j, s, last_key, serial_num;
FILE *fp, *fp2;
int data[NUM_REC]={109,49,34,68,45,2,60,38,28,47,16,19,34,55,
98,78,76,40,35,86,10,27,61,92,99,72,11,2,
29,16,80,73,18,12,89,50,46,36,67,93,22,14,
83,44,52,59,10,38,76,16,24,85};
int buffer[M],written[M],frozen[M];
char out_file_name[13];
/* create original file */
fp = fopen("ifile.dat", "wb");
for(i=0; i fprintf(fp, "%3d", data[i]);
fclose(fp);
fp = fopen("ifile.dat", "r");
for(i=0; i fscanf(fp, "%3d",&buffer[i]);
written[i]=FALSE;
}
serial_num=1;
for(j=M; j get_new_file_name(out_file_name,serial_num);
serial_num++;
fp2 = fopen(out_file_name,"wb");
for(i=0; i if(written[i]==FALSE)
frozen[i]=FALSE;
}
while(all_frozen(frozen)==FALSE) {
s=get_smallest(buffer,frozen);
fprintf(fp2, "%3d", buffer[s]);
last_key=buffer[s];
written[s]=TRUE;
frozen[s]=TRUE;
if(j fscanf(fp,"%3d",&buffer[s]);
j++;
written[s]=FALSE;
if(buffer[s] >= last_key)
frozen[s]=FALSE;
}
else
buffer[s]=-1;
}
fclose(fp2);
}
get_new_file_name(out_file_name,serial_num);
fp2 = fopen(out_file_name,"wb");
for(i=0;i if(buffer[i]==-1)
frozen[i]=TRUE;
else
frozen[i]=FALSE;
}
for(i=0;i s=get_smallest(buffer,frozen);
fprintf(fp2, "%3d",buffer[s]);
frozen[s]=TRUE;
}
fclose(fp);
fclose(fp2);
}
|