Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Una misma función puede ser llamada tanto desde start como desde init. Esto debería arreglarse.
Puedo hacerlo con los dedos, pero hay que pensarlo bien))
así:
cuente el número de funciones, que sea 4, escriba #define X 4 en la cabecera del código
suponer que el número máximo de llamadas en un tick es #define Y 100
tenemos una matriz de tamaño 4 x 100, inicializamos la matriz = -1
y ahora, cuando se llama a una función en el punto de entrada de la función, añadir una llamada del contador (formador de gráficos), que debe añadir código (1,2,3 o 4) a la posición deseada X en la entrada en nuestra matriz en la línea libre - que llamó a
Creo que tu problema se parece más a los gra fos de red, sospecho que la matriz para los grafos de red se ha desarrollado hace tiempo - tienes que buscar en Google
SZY: bueno, aquí ya está la 2ª página del tema ;)
IgorM, la forma que propones para almacenar el grafo se llama "matriz de adyacencia". Es muy poco económico para los grafos dispersos (y los programadores deberían recibir una paliza por la arquitectura de "grafo completo conectado", etc.).
Es mucho mejor utilizar la lista de bordes (es decir, almacenamos una matriz unidimensional de estructuras que consisten en 2 elementos - id de la función que llama e id de la función llamada; la estructura se puede complementar con campos adicionales - contadores de llamadas, etc.)
p.d. El matapartes se ha desarrollado realmente hace mucho tiempo :)
IgorM, la forma que propones para almacenar el grafo se llama "matriz de adyacencia".
¿Prueba de la imposibilidad de una idea ?
hay destructores y algo así como el desenrollado de la pila.
Aunque... para el mismo C++ existen librerías que permiten construir el orden de las llamadas a funciones para cualquier punto del código
por pila.
.
Así que... cada vuelta significa llamadas adicionales :-).
Un árbol es un caso especial de un gráfico.
Sí, eso es lo que quería decir. Basado en la linealidad del código MQL - será un árbol en su forma pura. Ya que los nodos no se señalan entre sí.
IgorM:
tener una matriz de dimensión 4 x 100, inicializar la matriz = -1
y ahora al llamar a la función en el punto de entrada de la función añadimos una llamada del contador (graficador) que debe añadir un código (1,2,3 o 4) en la posición X requerida a la fila libre en la entrada en nuestra matriz - que la llamó
Sí, ahora lo veo. Pero me parece que este enfoque requiere mucho trabajo, no tanto en código como en recursos y preparación para el análisis. Para la ramificación habría que hacer una matriz tridimensional.
En general, se acepta la opción. Pero lo dejaremos en la página 4 del resumen por ahora :)
Creo que tu problema se parece más a los gra fos de red, sospecho que el aparato matemático para los grafos de red se ha desarrollado hace tiempo - tienes que buscar en Google
La tarea no es un saber hacer, ni una novedad. Un simple gráfico de funciones. Nada más.
No hay matemáticas nuevas, sólo necesitamos una versión simplificada en la medida de lo posible.
Es mucho mejor utilizar la lista de bordes (es decir, almacenar una matriz unidimensional de estructuras que constan de 2 elementos - id de la función que llama e id de la función llamada; la estructura se puede complementar con campos adicionales - contadores de llamadas, etc.)
Eugene, esto es exactamente lo que ya se ha hecho.
Pero el código se ha estancado. Por tercer día no puedo dormir ni beber.... . :)
No consigo averiguar cómo hacer que el retorno de la arista (más concretamente del nodo descendiente) al nodo padre vaya a la nueva arista (nuevo nodo descendiente). Pero para mantener la regla - usamos sólo una función de rastreo al principio de la función fuente.
No consigo averiguar cómo hacer un retorno de una costilla a un nodo para ir a una nueva rama.
¿Y todo con una sola función que ya ha hecho un pase hacia adelante? Ya está bien, vuelve sin hacer nada)) Pues nada, ya ha terminado la segunda página, pronto Vladimir no podrá soportarlo))))
Que Dios esté con ellos, con estas páginas. La tarea es interesante.
Verás, así es como puedes.... El retroceso al nodo padre puede hacerse ya en el nuevo descendiente llamado. Es decir, al ir al descendiente, el sistema bajará primero el árbol a un nivel inferior, y luego subirá al nuevo descendiente llamado.
Pero en esta versión no se pueden hacer ramas con una profundidad de más de dos. Porque el sistema siempre retrocederá antes de avanzar. Es decir, todas las funciones se dibujarán al mismo nivel.
Así que se piensa que tendremos que utilizar algunas matrices de variables, para identificar la posición actual. para seguir adelante, en lugar de volver. Esa es exactamente la complejidad de este retorno...
En el tráiler "pieza conceptual", más concretamente un ejemplo de aplicación. en MT 5
Hay que reescribir las funciones In() y out() para que funcionen con la lista de llamadas. Ahora sólo imprimen las entradas y salidas en el hilo estándar.
Malas noticias: no he guardado el sueño del tópico de una función de rastreo. Lo siento Sergeyev. :)
Buenas noticias: todo funciona.
Manual de usuario.
1. La macro "_in" se inserta al principio de cada función.
2. Todas las llamadas de retorno se sustituyen por "_return".
3. Al principio del programa se escriben dos definiciones
#define _in in(__FUNCTION__);
#define _return out(__FUNCTION__); return
Eso es todo.
Qué demonios con estas páginas. Es una tarea interesante.
Verás, así es como puedes.... El retroceso al nodo padre puede hacerse ya en el nuevo descendiente llamado. Es decir, al ir al descendiente, el sistema bajará primero el árbol a un nivel inferior, y luego subirá al nuevo descendiente llamado.
Pero en esta variante no se pueden hacer ramas con más de dos profundidades. Porque el sistema siempre retrocederá antes de avanzar. Es decir, todas las funciones se dibujarán al mismo nivel.
Así que se piensa que tendremos que utilizar algunas matrices de variables, para identificar la posición actual. para seguir adelante, en lugar de volver. Esa es exactamente la dificultad de esta vuelta...