Бинарный файл заполненный действительными числами. Если у последовательной пары чисел противоположные знаки, то поменять их местами
Обмен местами сделать через функцию. Попробовал это сделать, но получилась какая-то каша.
#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;
}