[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 436

 

정수 유형의 모든 요소가 1에서 100까지 오름차순으로 정렬되는 ArrayTemp[100]이 있습니다.

처음 1-50개 요소를 제거 하고 배열의 크기 를 [50]으로 줄여야 합니다.

배열의 두 번째 절반을 임시 배열로 복사하고 원래 배열의 크기를 조정한 다음 임시 배열에서 원래 배열로 다시 복사하여 이 작업을 수행하려고 생각했습니다.

- 더 쉬운 방법이 있습니까?

고맙습니다!

[삭제]  
chief2000 :

정수 유형의 모든 요소가 1에서 100까지 오름차순으로 정렬되는 ArrayTemp[100]이 있습니다.

처음 1-50개 요소를 제거하고 배열의 크기를 [50]으로 줄여야 합니다.

배열의 두 번째 절반을 임시 배열로 복사하고 원래 배열의 크기를 조정한 다음 임시 배열에서 원래 배열로 다시 복사하여 이 작업을 수행하려고 생각했습니다.

- 더 쉬운 방법이 있습니까?

고맙습니다!



내림차순으로 정렬한 다음 배열의 크기를 조정할 수 있습니다. 더 빠를 것이라고 생각합니다. 하지만 누가 알겠습니까?)
 
Figar0 :

내림차순으로 정렬한 다음 배열의 크기를 조정할 수 있습니다. 더 빠를 것이라고 생각합니다. 하지만 누가 알겠습니까?)

고맙습니다!

[삭제]  
Vinin :

당신의 첫 걸음은 훌륭합니다, Olga Alexandrovna. 330줄의 코드


안녕하세요! 이걸 칭찬이라고 해야 할지 그 반대라고 해야 할지 모르겠지만 어쨌든 답변 감사합니다.

불행히도 여전히 해결책을 찾을 수 없으므로 주요 품질과 문법을 이렇게 생각합니다. 현재로서는 코드가 진행되지 않았기 때문에 제가 이해한 바에 차이가 있습니다.

제 질문에 대한 답변을 기다리겠습니다...

 

좋은 사람들은 할 수 있는 모든 사람을 돕습니다.

다음은 조건에 따라 시간이 지나면 주문을 삭제해야 하는 코드입니다. 이것이 조건입니다.

MyCurrentTime >= OrderExpiriation && OrderMagicNumber () == MagicNumber

그렇다면 실제로 이 조건을 첫 번째 if 문에 삽입하면 그 안에 있는 다른 명령문이 이 조건을 고려하지 않는 이유는 무엇입니까?

즉, 이 코드는 작동하지 않으며 모든 보류 주문 을 한 번에 삭제합니다.

   for ( int counter= 0 ;counter< OrdersTotal ();counter++)
    {
     if ( OrderSelect (counter,SELECT_BY_POS,MODE_TRADES) == false) break ;

     if (MyCurrentTime >= OrderExpiriation && OrderMagicNumber () == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
       if ( OrderType () == OP_BUYLIMIT || OrderType () == OP_SELLLIMIT || OrderType () == OP_BUYSTOP || OrderType () == OP_SELLSTOP)
        {
         OrderDelete ( OrderTicket ());
        }
        
      }
    }

그러나 이 코드는 작동하며 주문을 즉시 삭제하지 않습니다.

   for ( int counter= 0 ;counter< OrdersTotal ();counter++)
    {
     if ( OrderSelect (counter,SELECT_BY_POS,MODE_TRADES) == false) break ;

     if (MyCurrentTime >= OrderExpiriation && OrderMagicNumber () == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
       if ( OrderType () == OP_BUYLIMIT || OrderType () == OP_SELLLIMIT || OrderType () == OP_BUYSTOP || OrderType () == OP_SELLSTOP && MyCurrentTime >= OrderExpiriation && OrderMagicNumber () == MagicNumber)
        {
         OrderDelete ( OrderTicket ());
        }
        
      }
    }
 

말해봐, 중단점은 무엇을 위한 것인가? 포럼을 검색했지만 정보를 찾지 못했습니다. 사용 방법?

 
chief2000 :

정수 유형의 모든 요소가 1에서 100까지 오름차순으로 정렬되는 ArrayTemp[100]이 있습니다.

처음 1-50개 요소를 제거하고 배열의 크기를 [50]으로 줄여야 합니다.

배열의 두 번째 절반을 임시 배열로 복사하고 원래 배열의 크기를 조정한 다음 임시 배열에서 원래 배열로 다시 복사하여 이 작업을 수행하려고 생각했습니다.

아무 것도 할 수 없으며 50번째 요소를 초기 요소로 간주합니다. 어쨌든 ArrayCopy 는 시간이 걸립니다.
 
sss2019 :

좋은 사람들은 할 수 있는 모든 사람을 돕습니다.

다음은 조건에 따라 시간이 지나면 주문을 삭제해야 하는 코드입니다. 이것이 조건입니다.

그렇다면 실제로 이 조건을 첫 번째 if 문에 삽입하면 그 안에 있는 다른 명령문이 이 조건을 고려하지 않는 이유는 무엇입니까?

즉, 이 코드는 작동하지 않으며 모든 보류 주문을 한 번에 삭제합니다.

그러나 이 코드는 작동하며 주문을 즉시 삭제하지 않습니다.

일반적으로 마지막 주문부터 순서대로 진행하는 것은 좋은 징조입니다. 두 번째 경우에는 조건에 괄호 를 추가하는 것을 두려워하지 마십시오.

 
fore-x :

말해봐, 중단점은 무엇을 위한 것인가? 포럼을 검색했지만 정보를 찾지 못했습니다. 사용 방법?

작동하지 않습니다. 그들은 정상적인 디버거가 있을 거라고 생각했지만 그렇지 않았습니다.
 
splxgf :
아무 것도 할 수 없으며 50번째 요소를 초기 요소로 간주합니다. 어쨌든 ArrayCopy는 시간이 걸립니다.

사실은 작동 중에 어레이가 최적화/테스트 속도에 영향을 미치는 더 많은 수의 요소(확장)를 주기적으로 포함해야 한다는 것입니다. 따라서 "좋은"순간에 원래 상태로 되돌립니다.

Figar0 의 솔루션: 내 것보다 간단하고 잘 작동합니다.

고맙습니다!