Переставить в обратном порядке компоненты файла предшествующие минимальному

у меня возникла проблема.Ввести числовой файл 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;
}

Ответы (0 шт):