Редактирование цикла вывода

Мне необходимо создать программу записывающую числа в бинарный файл и выводящую сумму чётных чисел. Программа успешно записывает файл, однако цикл по выводу на консоль числа и сумму выводит последнее число два раза и прибавляет это число к переменной сумме. Мне нужна ваша помощь в исправлении этого цикла, пожалуйста. Использовать n вместо fs.eof()==false; не вариант

ошибка

#include <iostream>
#include <fstream>
#include <string>
#include <ctime>

using namespace std;

int main()
{
    srand(time(NULL));
    setlocale(LC_ALL, "ru");
    string path = "first.bin";
    int n;
    int sum = 0, mas;
    int a;
    cout << "Введите количество элементов(отсчёт будет вестись с нуля)" << endl;
    cin >> n;
    fstream fs;
    fs.open(path, fstream::in | fstream::out | fstream::trunc | fstream::binary);
    if (fs.is_open())
    {
        for (int i = 0; i < n; i++)
        {
            a = rand() % 30 - 10;
            fs.write((char*)&a, sizeof(int));
        }
    }

    else
    {
        cout << "Не удалось открыть файл." << endl;
    }

    fs.close();
    fs.open(path, fstream::in | fstream::binary);

    for (int i = 0; fs.eof()==false; i++) {
        fs.read((char*)&a, sizeof(int));
        cout << "mas[" << i << "]=" << a << endl;
        if (a % 2 == 0)
        {
            sum += a;
        }
    }


    cout << "Сумма чётных элементов элементов в файле: " << sum << endl;
    fs.close();
    system("pause");
    return 0;
}

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