#include main(argc, argv) int argc; char **argv; { while (++argv, --argc) convert(*argv); exit(0); } convert(name) char *name; { FILE *df, *uf, *ind; char line[60]; int lad, lod, inxct, istrt, irec, lsn, irnk, nop; int ladg, lam, las, lodg, lom, los, ipn, i; float alt, aln, altmn, altmx, alnmn, alnmx; if (!(df = fopen(name, "r"))) { perror(name); return; } strcpy(line, name); strcpy(index(line, '.'), ".unf"); uf = fopen(line, "w"); strcpy(index(line, '.'), ".ind"); ind = fopen(line, "w"); istrt = 1; while (fgets(line, 60, df)) { sscanf(line, "%7d%2d%6d", &lsn, &irnk, &nop); for (i = 1; i <= nop; i++) { fgets(line, 60, df); sscanf(line, "%2d%2d%2d%c%3d%2d%2d%c%5d", &ladg, &lam, &las, &lad, &lodg, &lom, &los, &lod, &ipn); alt = ladg + lam/60.0 + las/3600.0; if (lad == 'S') alt = - alt; aln = lodg + lom/60.0 + los/3600.0; if (lod == 'W') aln = - aln; irec++; fwrite(&alt, sizeof alt, 1, uf); fwrite(&aln, sizeof aln, 1, uf); if (i <= 1) { altmx = altmn = alt; alnmx = alnmn = aln; } else { if (alt < altmn) altmn = alt; if (alt > altmx) altmx = alt; if (aln < alnmn) alnmn = aln; if (aln > alnmx) alnmx = aln; } } fprintf(ind, " %6d%8d%3d%8d%6d%10.5f%10.5f%10.5f%10.5f\n", ++inxct, lsn, irnk, istrt, nop, altmn, alnmn, altmx, alnmx); istrt += nop; } fclose(df); fclose(uf); fclose(ind); }