Бинарный файл заполненный действительными числами. Если у последовательной пары чисел противоположные знаки, то поменять их местами

Обмен местами сделать через функцию. Попробовал это сделать, но получилась какая-то каша.


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

void swap(fstream* iofile);

int main()
{
    double d;
    fstream fInpOut;
    fInpOut.open("file.dbl", ios::in | ios::out | ios::binary);
        while (fInpOut.peek() != EOF)
        {
            fInpOut.read((char*)&d, sizeof(double));
            cout << d << endl;
        }
        //swap(&fInpOut);
        cout << "Transformation is complited!\n";
        cout << d;
        fInpOut.close();
    cout << "\nPress any key to exit\n";
    _getch();
    return 0;
}

void swap(fstream* (iofile))
{
    iofile->seekg(0L, ios::end);
    int count = iofile->tellg() / sizeof(double);
    double* arr = new double[count];
    for (int i = 0; i < count; i++)
    {
        int value = ((arr[i] * arr[i + 1]) < 0);
        if (value)
        {
            swap(arr[i], arr[i + 1]);
        }
        iofile->write((char*)&arr, sizeof(double));
    }
    return;
}


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