#include #include #define N 10 struct car { char number[7]; char marka[20]; char surname[20]; char name[20]; char fname[20]; }; struct carcrash { char number[7]; }; struct masters { car elem[N]; int n; masters () { n = -1; } }; struct crash_masters { carcrash elem[N]; int n; crash_masters () { n = -1; } }; int main() { masters base; crash_masters crash; char buf[7], buf1[20]; int b, i, j; FILE *fp; fopen_s ( &fp, "avto_base.txt", "r" ); ++base.n; b = fscanf ( fp, "%s%s%s%s%s", base.elem[base.n].number, base.elem[base.n].marka, base.elem[base.n].surname, base.elem[base.n].name, base.elem[base.n].fname ); while ( b != -1 ) { ++base.n; b = fscanf ( fp, "%s", buf ); if ( b != -1 ) { for ( i = 0; i < base.n; ++i ) if ( strcmp( buf, base.elem[i].number ) < 0 ) { for ( j = base.n; j > i; --j ) { strcpy ( base.elem[j].number, base.elem[j-1].number ); strcpy ( base.elem[j].marka, base.elem[j-1].marka ); strcpy ( base.elem[j].surname, base.elem[j-1].surname ); strcpy ( base.elem[j].name, base.elem[j-1].name ); strcpy ( base.elem[j].fname, base.elem[j-1].fname ); } break; } strcpy ( base.elem[i].number, buf ); b = fscanf ( fp, "%s%s%s%s", base.elem[i].marka, base.elem[i].surname, base.elem[i].name, base.elem[i].fname ); } } fclose (fp); fopen_s ( &fp, "avto_crash_base.txt", "r" ); ++crash.n; b = fscanf ( fp, "%s%s", crash.elem[crash.n].number, buf1 ); while ( b != -1 ) { ++crash.n; b = fscanf ( fp, "%s", buf ); if ( b != -1 ) { for ( i = 0; i < crash.n; ++i ) if ( strcmp( buf, crash.elem[i].number ) < 0 ) { for ( j = crash.n; j > i; --j ) { strcpy ( crash.elem[j].number, crash.elem[j-1].number ); } break; } strcpy ( crash.elem[i].number, buf ); b = fscanf ( fp, "%s", buf1 ); } } fclose (fp); fopen_s ( &fp, "output.txt", "w" ); for ( i = 0; i < base.n; ++i ) fprintf_s ( fp, "%s %s %s %s %s \n", base.elem[i].number, base.elem[i].marka, base.elem[i].surname, base.elem[i].name, base.elem[i].fname ); for ( i = 0; i < crash.n; ++i ) fprintf_s ( fp, "%s \n", crash.elem[i].number ); fclose (fp); fopen_s ( &fp, "avto.out.txt", "w" ); j = 0; for ( i = 0; i < base.n; ++i ) for ( ; j < crash.n; ++j ) { b = strcmp(base.elem[i].number, crash.elem[j].number); if ( b == 0 ) fprintf_s ( fp, "%s %s %s \n", base.elem[i].surname, base.elem[i].name, base.elem[i].fname ); else if ( b < 0 ) break; } fclose (fp); }