Получить файл g из чисел исходного файла, в котором не было бы двух соседних чисел одинаковой четности

Файлы вообще не понимаю( Заранее спасибо, за ответ)

Выполнить задание для текстового и бинарного файлов. Размер файла <= 64GiB.

Компоненты файла f – целые числа, чётных чисел столько же, сколько нечёт- ных. Получить файл g из чисел исходного файла, в котором не было бы двух соседних чисел одинаковой четности.


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

Автор решения: Mikhailo

А можно читать из файлв, запоминая позиции двух указетелей - один на четные, другой на нечетные. И за каждым числом идти в нужное место. Вот так примерно, только я вывожу на экран а не в файл:

int main() {
    ifstream in("data");
    size_t pos2 = 0, pos1 = 0;

    for (;;) {
        // нечетное
        in.seekg(pos1);
        int n;

        while (in >> n && n % 2 == 0);

        if (!in) break;

        cout << n << "  ";
        pos1 = in.tellg();
        in.seekg(pos2);

        while (in >> n && n % 2 == 1);

        if (!in) break;

        cout << n << "  ";
        pos2 = in.tellg();
        }
    }

Для бинарного файла идея та же, но даже проще - там фиксированный размер записи.

→ Ссылка