Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 724

 
borilunad:
Si je comprends bien le problème.
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;}
Il n'est pas clair où n doit être pris...
 
valeryk:
Si je comprends bien le problème. Il n'est pas clair d'où n doit être pris...
Merci pour vos commentaires ! Le nombre d'ordres ouverts est égal à n. Lorsque le signal d'ouverture est répété, l'exigence d'avoir des bénéfices dans les positions déjà ouvertes augmente. Ainsi, j'évite les retraits déraisonnables. Il est résolu simplement dans la boucle, mais il n'est pas pratique de l'insérer dans les conditions d'ouverture, comme avec lecommutateur.Nous avons besoin d'une "factorielle", mais en additionnant un, pas en multipliant ! Formule ! Pour l'instant, j'utilise la formule ci-dessus avec MathMax.
 
borilunad:
Merci pour vos commentaires ! Le nombre d'ordres ouverts est égal à n. Lorsque le signal d'ouverture est répété, l'exigence d'avoir un profit dans les positions déjà ouvertes augmente. Ainsi, j'évite les retraits déraisonnables. Il est résolu simplement dans la boucle mais il n'est pas pratique de l'insérer dans les conditions d'ouverture. J'ai besoin d'une sorte de "factorielle", mais il faut additionner, pas multiplier !
Je vois. Eh bien, c'est comme ça que je ferais si le nombre de commandes est limité à 5. Dans ce cas, le balayage est le moyen le plus rapide.
 
valeryk:
Je vois. Eh bien, je le ferais de cette façon si le nombre de commandes est limité à 5. Dans ce cas, le défilement est le moyen le plus rapide.

Ouch ;) ?

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

Nn = iN[n];
 
valeryk:
Je vois. Je le ferais si le nombre de commandes est limité à 5. Un balayage est le moyen le plus rapide dans ce cas.
Je ne veux pas le limiter, c'est pourquoi je cherche une formule. Peut-être que cela me reviendra à l'esprit un jour, mais sans balayage et sans boucle !
 
VladislavVG:

Ouch ;) ?

D'accord. Mais s'il demande une valeur d'indice 7, par exemple ? Il doit être vérifié. Mais en tout cas, il n'y a pas d'erreurs.
 
borilunad:
Je ne veux pas être restrictif, donc je cherche une sorte de formule. Peut-être que cela viendra à moi en temps voulu, mais sans balayage et sans boucle !
Puis l'exemple ci-dessus, dans la boucle de l'inite pour remplir le tableau. Et redimensionner à partir des commandes maximales.
 
VladislavVG:

Ouch ;) ?

О ! Merci beaucoup ! C'est plus proche et plus facile ! Je vais expérimenter avec ça, comme je comprends le tableau. Mais il ne sera pas possible de faire indéfiniment avec le nombre. Ou vous pourriez, si n==2, prendre le deuxième membre, et si n==6 ou plus, ajouter d'autres membres dans le tableau. J'espère que j'ai bien compris !

 
borilunad:

Oui, le tableau peut être délibérément plus grand, par exemple en mesurant 100 ou plus - le nombre de commandes que vous avez peu de chances d'obtenir, mais il sera toujours limité.

Si vous voulez l'obtenir sans limites, vous n'aurez besoin que d'une boucle. Faites-en une fonction distincte, il sera normal de l'appeler à n'importe quel endroit. Il y aura une perte de vitesse : malheureusement, il n'y a pas de fonctions en ligne dans MKL.

 
borilunad:
Il m'a eu))
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);
  }
Raison: