|
커트 님이 쓰신 글 :
: DB에서 조회해온 데이터 카운트만큼 for문을 돌면서 데이터비교를 위한 배열에 담습니다.
: 담겨진 동적배열을 하나하나 비교하면서 최소,최대값을 뽑아내야하는데 동적인 배열이라 매번 다르기때문에 어떻게 비교를 해야하는지 난감하네여..
: 아래와 같은 로직입니다.
: ------------------------------------------------------------------------------
: // DB에서 조회해온 카운트
: iCell = FRMOT085M1->m_DAO->SearchAreaLinkID(minLink1);
: int iXY = 0;
: // 더블형 배열선언
: double *dMnX, *dMnY, *dMxX, *dMxY;
: dMnX = new double[iCell];
: dMnY = new double[iCell];
: dMxX = new double[iCell];
: dMxY = new double[iCell];
:
int idxMnx = 0;
int idxMny = 0;
int idxMxx = 0;
int idxMxy = 0;
: // 루프를 돌린다.
: for(int k = 0; k < iCell; k++)
: {
: cellID = FRMOT085M1->m_DAO->d_DBA->GetField("DAREA_ID"); // 조회된 필드
:
: for(l = 0; l < linkCellNum; l++) // 조회된 필드데이터와 동일한 ID를 찾기위한 루프
: {
: if(cellID == FRMOT085M1->mArrCellID[l]) // 동일한 ID일 경우 배열에 X,Y 값을 담는다.
: {
: IGRectanglePtr rect;
: rect = FRMOT085M1->mArrCell[l]->Extent;
: rect->get_Left(&minX);
: rect->get_Top(&minY);
: rect->get_Right(&maxX);
: rect->get_Bottom(&maxY);
:
: dMnX[iXY] = minX;
: dMnY[iXY] = minY;
: dMxX[iXY] = maxX;
: dMxY[iXY] = maxY;
if(dMnX[iXY]<dMnX[idxMnx]) idxMnx = iXY;
if(dMnY[iXY]<dMnY[idxMny]) idxMny = iXY;
if(dMxX[iXY]>dMxX[idxMxx]) idxMxx = iXY;
if(dMxY[iXY]>dMxY[idxMxy]) idxMxy= iXY;
: iXY++;
: }
: }
: }
idxMnx => 최소 dMnX Index
idxMny => 최소 dMnY Index
idxMxx => 최대 dMnX Index
idxMxy => 최대 dMnY Index
단 갯수가 하나라도 있어야 겠죠? 없을경우 대비해서는 flag 를 하나 두어 처리하시면 될듯 하군요.
: ----------------------------------------------------------------------------------
: dMnX[]에 해당하는 배열끼리 비교해서 최소값을 가지고있는 배열(값) 도출
: dMnY[]에 해당하는 배열끼리 비교해서 최소값을 가지고있는 배열(값) 도출
: dMxX[]에 해당하는 배열끼리 비교해서 최대값을 가지고있는 배열(값) 도출
: dMxY[]에 해당하는 배열끼리 비교해서 최대값을 가지고있는 배열(값) 도출
:
: 어떻게 해야할까요???
|