ATP, 적어도 나는 무언가를 기억하기 시작했습니다. 결국이 모든 찌꺼기를 연구 한 후 이미 15 년이 지났습니다. 실제 생활에서는 결코 유용하지 않았습니다)))) -하지만 "데이터 패킹"(메모리 절약)을 잊지 마십시오. 내가 틀릴 수 있지만 수학적 장치의 복잡성을 증가시키기 위해 성능 손실로 이어질 것입니다.
함수의 입력 및 출력 로깅은 C++에서 쉽게 수행되며, 소멸자와 스택 해제와 같은 것이 있습니다. ... 동일한 C ++에 대해 임의의 라이브러리가 있지만 스택에 있는 코드의 포인트를 사용하면 함수 호출 순서를 작성할 수 있습니다. . 그래서 ... 각 반환은 추가 호출을 의미합니다 :-).
네. 이것이 그가 의미한 것입니다. MQL 코드의 선형성을 기반으로 순수 트리가 있습니다. 정점이 서로를 가리키지 않기 때문입니다.
이고르M : 차원이 4 x 100인 행렬이 있고 행렬 = -1을 초기화합니다. 이제 진입점에서 함수를 호출할 때 함수에 대한 카운터(그래프 셰이퍼) 호출을 추가합니다. 이 호출은 입구에서 원하는 위치에 코드(1,2,3 또는 4)를 추가해야 합니다. 자유 회선 X의 행렬 - 전화를 건 사람
네. 이제 이해했습니다. 그러나 이 접근 방식은 실제로 노동 집약적이며 코드가 아니라 리소스 및 분석 준비에 필요한 것 같습니다. 분기를 위해서는 3차원 행렬을 만들어야 합니다. 일반적으로 옵션이 허용됩니다. 하지만 지금은 요약에 최대 4페이지로 남겨두도록 할게요 :)
나는 당신의 작업이 네트워크 그래프 와 더 비슷하다고 생각합니다. 네트워크 그래프에 대한 수학적 장치가 오랫동안 개발된 것으로 의심됩니다. Google에 검색해야 합니다.
과제는 노하우도 혁신도 아닙니다. 함수 그래프의 일반적인 구성입니다. 더 이상은 없어. 새로운 matapparat은 없으며 최소한의 단순화된 버전만 있으면 됩니다.
결국 동일한 함수를 start 와 init 에서 모두 호출할 수 있습니다. 이것은 수정해야 할 사항입니다.
나는 내 손가락에 할 수 있고, 특히 Nuno를 생각할 수 있습니다))
다음과 같이 다소:
함수의 수를 세고 4로 하고 코드 헤더에 #define X 4를 작성합니다.
틱당 최대 호출 수는 #define Y 100이라고 가정합니다.
차원이 4 x 100인 행렬이 있고 행렬 = -1을 초기화합니다.
이제 진입점에서 함수를 호출할 때 함수에 대한 카운터(그래프 셰이퍼) 호출을 추가합니다. 이 호출은 입구에서 원하는 위치에 코드(1,2,3 또는 4)를 추가해야 합니다. 자유 회선 X의 행렬 - 전화를 건 사람
나는 당신의 작업이 네트워크 그래프 와 더 비슷하다고 생각합니다. 네트워크 그래프에 대한 수학적 장치가 오랫동안 개발된 것으로 의심됩니다. Google에 검색해야 합니다.
추신: 글쎄, 그것은 이미 주제의 두 번째 페이지입니다.)
IgorM , 그래프 저장을 제안하는 방식을 "인접 행렬"이라고 합니다. 희소 그래프의 경우 매우 비경제적입니다(프로그래머는 "완전히 연결된 그래프" 아키텍처 등을 위해 두들겨 맞아야 함).
에지 목록을 사용하는 것이 훨씬 낫습니다(즉 , 호출 함수 의 id와 호출된 함수의 id라는 2개의 요소로 구성된 구조의 1차원 배열을 저장합니다. 구조는 추가 필드로 보완될 수 있습니다. 카운터 등)
ps. 마타파랏은 정말 오래전에 개발되었어요 :)
IgorM , 그래프 저장을 제안하는 방식을 "인접 행렬"이라고 합니다.
아이디어 가 불가능하다는 증거는 실패할까요?
소멸자와 스택 해제와 같은 것이 있습니다.
... 동일한 C ++에 대해 임의의 라이브러리가 있지만
스택에 있는 코드의 포인트를 사용하면 함수 호출 순서를 작성할 수 있습니다.
.
그래서 ... 각 반환은 추가 호출을 의미합니다 :-).
트리는 그래프의 특수한 경우입니다.
네. 이것이 그가 의미한 것입니다. MQL 코드의 선형성을 기반으로 순수 트리가 있습니다. 정점이 서로를 가리키지 않기 때문입니다.
이고르M :
차원이 4 x 100인 행렬이 있고 행렬 = -1을 초기화합니다.
이제 진입점에서 함수를 호출할 때 함수에 대한 카운터(그래프 셰이퍼) 호출을 추가합니다. 이 호출은 입구에서 원하는 위치에 코드(1,2,3 또는 4)를 추가해야 합니다. 자유 회선 X의 행렬 - 전화를 건 사람
네. 이제 이해했습니다. 그러나 이 접근 방식은 실제로 노동 집약적이며 코드가 아니라 리소스 및 분석 준비에 필요한 것 같습니다. 분기를 위해서는 3차원 행렬을 만들어야 합니다.
일반적으로 옵션이 허용됩니다. 하지만 지금은 요약에 최대 4페이지로 남겨두도록 할게요 :)
나는 당신의 작업이 네트워크 그래프 와 더 비슷하다고 생각합니다. 네트워크 그래프에 대한 수학적 장치가 오랫동안 개발된 것으로 의심됩니다. Google에 검색해야 합니다.
과제는 노하우도 혁신도 아닙니다. 함수 그래프의 일반적인 구성입니다. 더 이상은 없어.
새로운 matapparat은 없으며 최소한의 단순화된 버전만 있으면 됩니다.
에지 목록을 사용하는 것이 훨씬 낫습니다(즉, 호출 함수의 id와 호출된 함수의 id라는 2개의 요소로 구성된 구조의 1차원 배열을 저장합니다. 구조는 추가 필드로 보완될 수 있습니다. 카운터 등)
유진, 이것이 바로 이미 한 일입니다.
그러나 스토퍼가 발생했습니다. 삼일째는 잠도 안자고 술도 마시지 않고....:)
새 에지(새 자식 노드)로 이동하기 위해 에지(더 정확하게는 자식 노드)에서 부모 노드로 돌아가는 방법을 알 수 없습니다. 그러나 규칙을 준수하기 위해 소스 코드 기능의 시작 부분에 하나의 추적 기능만 사용합니다.
새 분기로 전환하기 위해 에지에서 노드로 돌아가는 방법을 알 수 없습니다.
그리고 이미 전달된 단 하나의 기능으로 모든 것이 가능합니까? 그것으로 충분합니다-아무것도하지 않고 돌아 가기)) 글쎄, 아무것도, 두 번째 페이지가 끝났습니다. 곧 블라디미르 가 그것을 참지 않을 것입니다)))
신이 이 페이지들과 함께 그들과 함께 하길. 과제는 흥미롭다.
알다시피, 여기 당신이 할 수 있는 방법이 있습니다. 부모 노드로의 롤백은 자식에 대한 새로운 호출에서 이미 수행될 수 있습니다. 즉, 하위 항목으로 전환할 때 시스템은 먼저 트리를 더 낮은 수준으로 내려간 다음 새로 호출되는 하위 항목으로 올라갑니다.
그러나 이 옵션에서는 깊이가 2 이상인 가지를 만들 수 없습니다. 시스템은 항상 앞으로 가기 전에 뒤로 돌아가기 때문입니다. 즉, 모든 기능이 같은 수준으로 그려집니다.
따라서 현재 위치를 식별하기 위해 일부 변수 배열을 사용해야 할 것 같습니다. 돌아오지 않고 나아가는 것. 복잡성이 ...
예고편에는 "개념적 공백" 또는 오히려 구현 예가 있습니다. MT5에서
이를 염두에 두려면 호출 목록과 함께 작동하도록 in() 및 out() 함수를 다시 작성해야 합니다. 이제 그들은 어리석게도 표준 스트림에 입력과 출력을 인쇄합니다.
나쁜 소식: 단일 추적 기능에 대한 topicstarter의 꿈을 저장하지 않았습니다. 죄송합니다 세르게예프. :)
좋은 소식: 모든 것이 작동합니다.
사용자 설명서.
1. 각 기능의 시작 부분에 매크로 "_in"이 삽입됩니다.
2. 모든 반환 호출은 "_return"으로 대체됩니다.
3. 프로그램 시작 시 두 개의 정의가 작성됩니다.
#define _in( __FUNCTION__ );
#define _return out(__FUNCTION__);반환
섭스노의 모든 것.
신이 이 페이지들과 함께 그들과 함께 하길. 과제는 흥미롭다.
알다시피, 여기 당신이 할 수 있는 방법이 있습니다. 부모 노드로의 롤백은 자식에 대한 새로운 호출에서 이미 수행될 수 있습니다. 즉, 하위 항목으로 전환할 때 시스템은 먼저 트리를 더 낮은 수준으로 내려간 다음 새로 호출되는 하위 항목으로 올라갑니다.
그러나 이 옵션에서는 깊이가 2 이상인 가지를 만들 수 없습니다. 시스템은 항상 앞으로 가기 전에 뒤로 돌아가기 때문입니다. 즉, 모든 기능이 같은 수준으로 그려집니다.
따라서 현재 위치를 식별하기 위해 일부 변수 배열을 사용해야 할 것 같습니다. 돌아오지 않고 나아가는 것. 복잡성이 ...