A>Нужно создать динамический двумерный массив, состоящий из такой структуры. Как это сделать? A>В первую очередь интересует синтаксис.
A>2. Пытался выделить память статически: A>
A>POINTS points[200][100];
A>
A>При обращении к полям A>
A>points[pointsNum][resultsNum].pointX = a;
A>
A>выдается ошибка. A>Как правильно обращаться к полям такого массива?
может ошибка потому что по индексам за предлы массива вышел?
A>Нужно создать динамический двумерный массив, состоящий из такой структуры. Как это сделать? A>В первую очередь интересует синтаксис.
A>2. Пытался выделить память статически: A>
A>POINTS points[200][100];
A>
A>При обращении к полям A>
A>points[pointsNum][resultsNum].pointX = a;
A>
A>выдается ошибка. A>Как правильно обращаться к полям такого массива?
Всё вроде правильно, ошибок быть не должно, если за границы не вылез.
Динамически можно так:
POINT** points = new POINT*[M];
for(int i=0;i<M;++i)points[i] = new POINT[N];
// обращение к points[i][j]:
POINT& p = points[i][j];
а можно просто одномерным массивом:
POINT* points = new POINT[M*N];
// обращение к points[i][j]:
POINT& p = points[i*N+j];
а в программе выделить под нее память динамически, то angle не обнуляется. В случае статического объявления angle обнуляется на стадии сборки проекта. Я правильно понимаю?
Здравствуйте, Anativ, Вы писали:
A>Sokel, спасибо. Заработало.
A>Еще один вопрос возник. Просто проверить. A>В случае, если объявить структуру так: A>
A>typedef struct POINT
A>{
A>float pointX;
A>float pointY;
A>float angle;
A>POINT()
A> {
A> angle = 0;
A> }
A>} POINT;
A>
A>а в программе выделить под нее память динамически, то angle не обнуляется. В случае статического объявления angle обнуляется на стадии сборки проекта. Я правильно понимаю?
И в случае динамического и в случае статического выделения будет срабатывать твой конструктор который ты объявил и
который будет нулить поле angle
А если такая ситуация: я читаю файл построчно. После чтения каждой строки из нее выделяются пресловутые pointX, pointY и angle.
Поэтому необходимо после чтения каждой строки выделить память не сразу для нескольких элементов, а для каждого элемента в отдельности. Как это можно сделать?
Конечно, можно сначала пройтись по файлу и посчитать количество записей, после чего выделять память уже для полного массива и пройтись по этому файлу заново, занося значения в массив. Но ведь это не путь тру программиста...
Здравствуйте, Барбос, Вы писали:
Б>А если такая ситуация: я читаю файл построчно. После чтения каждой строки из нее выделяются пресловутые pointX, pointY и angle. Б>Поэтому необходимо после чтения каждой строки выделить память не сразу для нескольких элементов, а для каждого элемента в отдельности. Как это можно сделать? Б>Конечно, можно сначала пройтись по файлу и посчитать количество записей, после чего выделять память уже для полного массива и пройтись по этому файлу заново, занося значения в массив. Но ведь это не путь тру программиста...
1. Хранить в файле кол-во эл-тов.
или
2. Взять длину файла и поделить на sizeof(struct POINTS)
Б>>А если такая ситуация: я читаю файл построчно. После чтения каждой строки из нее выделяются пресловутые pointX, pointY и angle. Б>>Поэтому необходимо после чтения каждой строки выделить память не сразу для нескольких элементов, а для каждого элемента в отдельности. Как это можно сделать? Б>>Конечно, можно сначала пройтись по файлу и посчитать количество записей, после чего выделять память уже для полного массива и пройтись по этому файлу заново, занося значения в массив. Но ведь это не путь тру программиста...
S>1. Хранить в файле кол-во эл-тов. S>или S>2. Взять длину файла и поделить на sizeof(struct POINTS)
Количество элементов неудобно считать каждый раз. А вдруг их около сотни? И если формат файла нефиксированный (комментарии, другие параметры и т.п.)?
Здравствуйте, Барбос, Вы писали:
Б>Количество элементов неудобно считать каждый раз. А вдруг их около сотни? И если формат файла нефиксированный (комментарии, другие параметры и т.п.)?
Тут уже говорили — используй вектор (std::vector). В него можно динамически добавлять элементы и не думать о том, как что выделяется.