Кривой вывод bin-файла

Накидал программку, в ней для меня в принципе всё работает, кроме вывода через файл. Минимальный (на примере он первый) элемент массива выводится как дефолтный, который был изначально, хотя должен заменяться. Всё считается правильно, перепроверил сам массив внутри программы.

Условие: В данном бинарном файле, содержащий целые числа, заменить элемент, имеющий максимальное значение на сумму всех элементов, а элемент, который имеет минимальное значение, на сумму попарных разностей элементов.

Вывод проги, в конце видно что результат не тот, который считает программа Код C++:

#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

const int n=6; // только четные

int main() {
    FILE *f;

    int a[n]={1,2,3,4,5,6};
    int i;

    cout<<"Soderzhimoe bin faila: \n";
    f = fopen("Cinput.bin", "w");
    for(i=0; i<n; i++)
    {
        fwrite(&a[i],1,n,f);
    }
    fclose(f);

    f = fopen("Cinput.txt", "r");
    fread(a,1,n,f);
    fclose(f);

    for (i=0; i<n; i++)
    {
        printf("%d ",a[i]);
    }


    int imin, imax, sum, spr, ch1, ch2;

    imin=0; imax=0; sum=a[0];
    for(i=1;i<n;i++)
    {
        if(a[i]<a[imin]){imin=i;};
        if(a[i]>a[imax]){imax=i;};
        sum+=a[i];
    }

    spr=0;
    for(i=1;i<n;i+=2)
    {
        ch1 = a[i]; ch2 = a[i-1];
        if (ch1>ch2){spr+=ch1-ch2;}
        else {spr+=ch2-ch1;}
    }

    a[imax]=sum;
    a[imin]=spr;
    cout<<endl<<endl<<"imax: "<<imax<<" imin: "<<imin<<" sum: "<<sum<<" spr: "<<spr<<endl<<endl;

    for(i=0;i<n;i++)cout<<a[i]<<" ";


    cout<<endl<<"Rezultat izmeneniy bin faila: \n";
    f = fopen("Cinput.bin", "w");
    for(i=0; i<n; i++)
    {
        fwrite(&a[i],1,n,f);
    }
    fclose(f);

    f = fopen("Cinput.txt", "r");
    fread(a,1,n,f);
    fclose(f);

    for (i=0; i<n; i++)
    {
        //printf("%d ",a[i]);
        cout<<a[i]<<" ";
    }
    cout<<endl;

    return 0;
}

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