Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 406

 
RomanRott:

¿Cómo puedo escribir una función con un número variable de parámetros?

Puede establecer algunos de los parámetros de una función a un valor inicial (estos parámetros deben ser los últimos). Cuando se llama a la función, estos parámetros se pueden establecer o no, dependiendo de la necesidad. Si los parámetros no se establecen explícitamente, recibirán valores iniciales.

La segunda opción es la sobrecarga. Simplemente escriba una función con el mismo nombre, sólo que con diferentes tipos/número de parámetros.

 
Artyom Trishkin:

¿Cómo qué?


Necesito pasar varios parámetros a una función, pero en diferentes situaciones necesito pasar un número diferente, conocido de antemano
y luego procesar estos parámetros en la función

En C, por ejemplo, esto se implementa así

int func(int a, int b, ...)
 

¿Hay alguna forma de poner un botón de "Deshacer" en la barra de herramientas del MetaEditor?
(el que implementa Ctrl+Z)

 
RomanRott:

Necesito pasar varios parámetros a una función, pero en diferentes situaciones necesito pasar un número diferente, conocido de antemano
y luego procesar estos parámetros en la función

En C, por ejemplo, esto se implementa así

int func(int a, int b, ...)

Pasar el array y el número de parámetros a tomar del array

 
STARIJ:

Pasar un array y el número de parámetros a tomar del array

Así que los números que necesito pasar no están en orden, es decir, no se puede generar un universal
 
RomanRott:
Así que los números que necesito pasar no están en orden, es decir, no se puede generar un universal.
Al menos dame un ejemplo que no sea abstracto.
 
Artyom Trishkin:
Al menos dame un ejemplo no abstracto.

Por ejemplo:
Dependiendo de la condición(NO si, sino básicamente, yo mismo escribo estos números)

a = func(dígito, 10, 18, 42); o a = func(dígito, 11, 18, 42, 15, 13); o a = func(dígito, 5);


double func(int num, ????)
{

return("suma de estos parámetros"/num);

}

 
RomanRott:

así:
Dependiendo de la condición (NO si, pero básicamente, escribo estos números yo mismo)

a = func(dígito, 10, 18, 42); o a = func(dígito, 11, 18, 42, 15, 13); o a = func(dígito, 5);


double func(int num, ????)
{

return("suma de estos parámetros"/num);

}

Bueno, entonces, lo que primero vino a la mente, y como ya se ha sugerido aquí por encima - pasar en la función de la matriz doble, y en la función de calcular los valores necesarios de los valores de la matriz pasado - es posible conocer tanto la cantidad de números(tamaño de la matriz), y en consecuencia para calcular sus relaciones. Sólo la fórmula seguirá siendo la misma para cualquier tamaño de la matriz. Si va a cambiar la fórmula también, entonces sólo la matriz no funcionará para esto, tendrá que hacer un parámetro más - que apuntará a la fórmula correcta para el cálculo. Por ejemplo, puede pasar una enumeración que indique el tipo de fórmula (ENUM_TYPE_CALCULATED) y, basándose en el valor de esta enumeración, por ejemplo CALCULATE_SUMM, simplemente calcular (en este ejemplo) la suma de todos los valores del array pasado.

 
RomanRott:
Así que los números que necesito pasar allí están fuera de orden, es decir, no se puede formar un universal

Aquí hay una respuesta completa, pero no hay respuesta...

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cualquier pregunta de los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos

Alexey Kozitsyn, 2018.01.05 11:46

Puede establecer algunos parámetros de la función con un valor inicial (estos parámetros deben ser los últimos). Cuando llame a la función, podrá establecer estos parámetros o no, dependiendo de la necesidad. Si los parámetros no se fijan explícitamente - obtendrán valores iniciales.

La segunda opción es la sobrecarga. Simplemente escriba una función con el mismo nombre, sólo que con diferentes tipos/número de parámetros.


 
Alexey Viktorov:

Aquí hay una respuesta en toda regla, pero no hay respuesta a ella...


Si el conjunto y el número de números no se conocen de antemano, no existe una función para cada nuevo conjunto.

Razón de la queja: