Почему векторы не заполняются от файла?

Делал задание из 10 главы "Принципы и практика использования C++" Бьярне Страуструпа. 1ый вектор должен хранить 7 пар координат x и y. Далее я заполняю текстовый файл этими данными, считываю его и записываю данные в новый вектор. Но векторы почему-то не заполняются.

Вектор coordinates и points должны были получится одинаковыми. Однако, после того как пользователь ввёл 7 пар координат, выходит сообщение "Проверим оба вектора на равенство..." из cout и всё. Содержимое векторов не выводится на экран, файл mydata.txt тоже пуст. Помогите, пожалуйста, что я делаю не так? Код:

#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using std::cout;
using std::cin;
using std::ifstream;
using std::ofstream;
using std::string;
using std::vector;
using std::runtime_error;
void keep_window_open() {char ch; cin >> ch;}
void error(string s);
void skip_to_int();

void error(string s) 
{
    throw runtime_error(s);
}

struct Point 
{
    double x;
    double y;
};

int main() 
{
    double x, y;
    vector<Point> coordinates {};
    cout << "Введите 7 пар координат x и y для записи в файл:\n";
    for (int i; i < 7; ++ i) {
        cin >> x >> y;
        if (!cin) 
        {
            skip_to_int();
        }
        coordinates.push_back(Point{x, y});
    }
    ofstream oft;
    oft.open("mydata.txt");
    if (!oft) error("Файл не открывается");
    for (int i; i < coordinates.size(); ++ i) 
    {
        oft << "(" << coordinates[i].x << ";" << coordinates[i].y << ")\n";
    }
    oft.close();
    vector<Point> points {};
    ifstream ist;
    ist.open("mydata.txt");
    if (!ist) error("Файл не открывается");
    x = 0; y = 0;
    while (ist >> x >> y) {
        if (!ist) 
        {
            skip_to_int();
        }
        points.push_back(Point{x, y});
    }
    ist.close();
    cout << "\nПроверим оба вектора на равенство...\n";
    for (int i; i < coordinates.size(); ++ i) 
    {
        cout << "(" << coordinates[i].x << ";" << coordinates[i].y << ")\n";
    }
    for (int i; i < points.size(); ++ i) 
    {
        cout << "(" << points[i].x << ";" << points[i].y << ")\n";
    }
    keep_window_open();
    return 0;
}

void skip_to_int() 
{
    if (cin.fail()) 
    {
        cin.clear(); // возвращаем поток в good()
        for (char ch; cin >> ch;) 
        {
            if (isdigit(ch) || ch == '-' || ch == '.') 
            {
                cin.unget();
                return;
            }
        }
    }
    error("Ввода нет");
}

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