/*
Гусятинер Л.Б. & 302ИС-23, 18.05.2026
выгрузить в массив и выгрузить обратно
размер массивак = размеру бинарника
*/
#include <stdio.h>
#include <stdlib.h>
#define MAXN 100
#define SZ_INT sizeof(int)
int main(void) {
char *txt_name = "in.txt";
char *bin_name = "in.bin";
FILE *f_txt = fopen(txt_name, "r");
FILE *f_bin = fopen(bin_name, "wb");
int num;
while (1 == fscanf(f_txt, "%d", &num)) {
fwrite(&num, sizeof(int), 1, f_bin);
}
fclose(f_txt);
fclose(f_bin);
f_bin = fopen(bin_name, "rb");
fseek(f_bin, 0, SEEK_END);
int size = ftell(f_bin);
int total = size / sizeof(int);
int *arr = (int *)malloc(size);
fseek(f_bin, 0, SEEK_SET);
for (int i = 0; i < total; i++) {
fread(&arr[i], sizeof(int), 1, f_bin);
}
fclose(f_bin);
/*
for (int i = 0; i < total; i++) {
printf("%d ", arr[i]);
}
*/
f_bin = fopen(bin_name, "r+b");
int arr_j, arr_imin, arr_i;
for (int i = 0; i < total-1; i++) {
int imin = i;
fseek(f_bin, imin * SZ_INT, SEEK_SET);
fread(&arr_imin, SZ_INT, 1, f_bin);
for (int j = i+1; j < total; j++) {
fseek(f_bin, j * SZ_INT, SEEK_SET);
fread(&arr_j, SZ_INT, 1, f_bin);
if (arr_j < arr_imin) {
arr_imin = arr_j;
imin = j;
}
}
if (i != imin) {
fseek(f_bin, imin * SZ_INT, SEEK_SET);
fread(&arr_imin, SZ_INT, 1, f_bin);
fseek(f_bin, i * SZ_INT, SEEK_SET);
fread(&arr_i, SZ_INT, 1, f_bin);
fseek(f_bin, imin * SZ_INT, SEEK_SET);
fwrite(&arr_i, SZ_INT, 1, f_bin);
fseek(f_bin, i * SZ_INT, SEEK_SET);
fwrite(&arr_imin, SZ_INT, 1, f_bin);
}
}
/*
printf("\n");
for (int i = 0; i < total; i++) {
printf("%d ", arr[i]);
}
*/
rewind(f_bin);
for (int i = 0; i < total; i++) {
int num;
fread(&num, sizeof(int), 1, f_bin);
printf("%d ", num);
}
fclose(f_bin);
/*
printf("\n");
for (int i = 0; i < total; i++) {
printf("%d ", arr[i]);
}
*/
return 0;
}