Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 724

 
borilunad:
Si entiendo bien el problema.
int n,Nn;
switch(n)
  {case 1:Nn=1;break;case 2:Nn=3;break;case 3:Nn=6;break;case 4:Nn=10;break;case 5:Nn=15;break;default :Nn=0;}
No está claro de dónde hay que sacar n...
 
valeryk:
Si he entendido bien el problema, no está claro de dónde hay que sacar n...
Gracias por sus comentarios. El número de órdenes abiertas es igual a n. Cuando se repite la señal de apertura, aumenta la exigencia de tener beneficios en las posiciones ya abiertas. De este modo, evito las detracciones poco razonables. Se resuelve sencillamente en el bucle, pero no es conveniente insertarlo en las condiciones de apertura, como con elinterruptor.Necesitamos un "factorial", pero sumando uno, ¡no multiplicando! ¡Fórmula! Hasta ahora estoy usando la fórmula anterior con MathMax.
 
borilunad:
Gracias por sus comentarios. El número de órdenes abiertas es igual a n. Cuando se repite la señal de apertura, aumenta la exigencia de tener beneficios en las posiciones ya abiertas. De este modo, evito las detracciones poco razonables. Se resuelve de forma sencilla en el bucle, pero no es conveniente introducirlo en las condiciones de apertura. Necesito una especie de "factorial", pero debería sumar, no multiplicar.
Ya veo. Así es como lo haría si el número de pedidos está limitado a 5. El barrido en este caso es la forma más rápida.
 
valeryk:
Ya veo. Yo lo haría así si el número de pedidos se limita a 5. El desplazamiento en este caso es la forma más rápida.

Ouch ;) ?

const int iN[] = {1,3,6,10,15};

Nn = iN[n];
 
valeryk:
Ya veo. Bueno, lo haría si el número de pedidos está limitado a 5. Un barrido es la forma más rápida en este caso.
No quiero limitarlo, y por eso busco una fórmula. Tal vez, se me ocurra eventualmente, ¡pero sin barrido y sin bucle!
 
VladislavVG:

Ouch ;) ?

De acuerdo. ¿Pero si pide un valor de índice 7, por ejemplo? Hay que comprobarlo. Pero en cualquier caso no hay errores.
 
borilunad:
Sólo que no quiero ser restrictivo, así que estoy buscando algún tipo de fórmula. ¡Tal vez me llegue con el tiempo, pero sin barrido y sin bucle!
Entonces el ejemplo anterior, en el bucle en el inite para llenar la matriz. Y redimensionar a partir de los pedidos máximos.
 
VladislavVG:

Ouch ;) ?

¡О! ¡Muchas gracias! Eso está más cerca y es más fácil. Voy a experimentar con esto, ya que entiendo la matriz. Pero no se podrá hacer indefinidamente con el número. O podrías si n==2, entonces tomar el segundo miembro, y si n==6 o más, entonces poner más miembros en el array. Espero haberlo hecho bien.

 
borilunad:

Sí, la matriz se puede hacer deliberadamente más grande, por ejemplo, midiendo 100 o más - el número de pedidos que es poco probable que obtenga, pero seguirá siendo limitada.

Si quieres conseguirlo sin límites, sólo necesitarás un bucle. Que sea una función independiente, será normal llamarla en cualquier sitio. Habrá una pérdida de velocidad: desafortunadamente, no hay Funciones en línea en MKL.

 
borilunad:
Me tiene))
input int MaxOrders = 5;  // внешняя

int Nn[];  // глобальная

int OnInit()
  {
   string txt="";
   int i=0,temp=0;
   ArrayResize(Nn,MaxOrders+1);
   for(i=1;i<=MaxOrders;i++) 
     {
      temp+=int(MathMax(i-1,0));
      Nn[i]=temp;
      txt=StringConcatenate(txt,"\n",temp);
     }
   Comment(txt);
   return(INIT_SUCCEEDED);
  }
Razón de la queja: