Задание из 10 главы "Принципы и практика использования C++". Почему векторы не заполняются?

Делал вроде по образцу, на основе полученных знаний о главе. Но программа после получения 7 пар координат пишет "Проверим оба вектора на равенство" и всё. Больше ничего. Векторы не заполняются, файл "mydata.txt" тоже. Векторы coordinates и points должны были хранить по 7 пар координат, который ввёл пользователь. Подскажите пожалуйста, в чём проблема?

#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 шт):