Переставить в обратном порядке компоненты файла предшествующие минимальному
у меня возникла проблема.Ввести числовой файл F . Переставить в нём все компоненты, предшествующие минимальной в обратном порядке. Задача:определить на какой позиции находится максимум уже в изменном файле. Файл вывести до и после преобразования. Можете подсказать, в чем ошибка?
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
FILE *f;
f=fopen("1.txt","w");
cout<<"\nVvod file:";
int i=0,b;
cout<<"\nVvod 0-go komponenta ili 555 ";
cin>>b;
while (b!=555)
{
fwrite(&b,sizeof(b),1,f);
i++;
cout<<"\nVvod "<<i<<"-go komponenta ";
cin>>b;
}
fclose(f);
f=fopen("1.txt","r");
cout<<"\nVivod file:";
while (fread(&b,sizeof(b),1,f))
{
cout<<"\t"<<b;
}
fseek(f, 0L, SEEK_SET);
fclose(f);
f=fopen("1.txt","r");
int min=999, imin=0;
while (fread(&b,sizeof(b),1,f))
if(b<min){
min=b;
imin=ftell(f);
} fclose(f);
f=fopen("1.txt","r+");
int a;
for(int i=0; i<imin/2; i++)
{
fseek(f, (imin)*sizeof(b), SEEK_SET);
fread(&b,sizeof(b),1,f);
fseek(f, (imin-i-1)*sizeof(b), SEEK_SET);
fread(&a,sizeof(a),1,f);
fseek(f, (imin)*sizeof(b), SEEK_SET);
fwrite(&a,sizeof(a),1,f);
fseek(f, (imin-i-1)*sizeof(b), SEEK_SET);
fwrite(&b,sizeof(b),1,f);
}
fclose(f);
f=fopen("1.txt","r");
cout<<"\nVivod file:";
while (fread(&b,sizeof(b),1,f))
cout<<"\t"<<b;
}