Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2014, 14:40   #1
cover
 
Регистрация: 08.10.2012
Сообщений: 9
По умолчанию Работа с векторами

Помогите, пожалуйста. Не могу понять, в чем ошибка:

Код:
#include <math.h>
#pragma hdrstop

#include "Unit19.h"
//-------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

struct coords {
double   x;
double y;
double z;
};
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
vector<coords>surface;
int Nx=150, Ny=150, h=150, dd=1, Nz=150;
  for(int j=0; j<Ny; j++)
for(int i=0; i<Nx; i++)

{double dz=h;
double dy=j*dd;
double dx=i*dd;
coords point={dx, dy, dx};
surface.push_back(point);
}
int Nk=60/dd;
 for(int k=0; k<Nk; k++)
   for(int j=0; j<Nk; j++)
for(int i=0; i<Nk; i++)
{
 double dz=h-k*dd;
 double dy=ceil((100-60/2)/dd)*dd+j*dd;
 double dx=ceil((100-60/2)/dd)*dd+i*dd;
 coords point={dx, dy, dz};
 surface.push_back(point);
}
//int   A[150][150][150];
vector<coords>::iterator First;
First=surface.begin();
vector<coords>::iterator Last=surface.end();
byte Perfect[150][150][150];
while(First!=Last)
{
int i=(*First)*x/dd;    //ошибки
int j=(*First)*y/dd;   //
int k=(*First)*z/dd;   //
Perfect[i][j][k]=1;
++First;
}
}
Ошибка такого плана: [C++ Error] Unit19.cpp(55): E2451 Undefined symbol 'y'


Помогите, как правильно обратиться к элементу вектора через указатель? Может ли быть проблема в том, что данные я заношу так:
coords point={dx, dy, dx};
surface.push_back(point);
cover вне форума Ответить с цитированием
Старый 21.04.2014, 16:06   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
int i=(*First)*x/dd;    //ошибки
int j=(*First)*y/dd;   //
int k=(*First)*z/dd;   //
А вы что хотели? Кто такие x, y, z? Компилятор их не знает, я с ним согласен... приживалки какие-то. Если вы имели в виду члены структуры, то посмотрите как к ним обращаются.
p51x вне форума Ответить с цитированием
Старый 23.04.2014, 09:03   #3
cover
 
Регистрация: 08.10.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Если вы имели в виду члены структуры, то посмотрите как к ним обращаются.
Обращалась и как к элементам структуры, все равно ошибка
Вы не можете написать, как будет выглядеть обращение?
cover вне форума Ответить с цитированием
Старый 23.04.2014, 14:34   #4
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Код:
int i=(*First)*x/dd;    //ошибки
int j=(*First)*y/dd;   //
int k=(*First)*z/dd;   //
Надо:
Код:
int i=(*First).x/dd;
или
Код:
int i=First->x/dd;
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 23.04.2014, 16:03   #5
cover
 
Регистрация: 08.10.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Krok27 Посмотреть сообщение
[
Код:
int i=(*First).x/dd;
спасибо большое!
cover вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с векторами в Delphi 7 Anton94.by Помощь студентам 8 31.03.2014 15:04
Работа с векторами в МатКаде. seroga2012 Помощь студентам 0 25.04.2012 20:47
работа с векторами Jenny_19 Паскаль, Turbo Pascal, PascalABC.NET 0 21.12.2011 20:00
Работа с векторами.с++. нубс++ Помощь студентам 2 08.05.2011 19:52
Работа с векторами prem1era Паскаль, Turbo Pascal, PascalABC.NET 0 23.03.2011 21:38