Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 724

 
borilunad :
Eğer sorunu doğru anladıysam.
 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 ;}
N'nin nereden alınması gerektiği belli değil...
 
valeryk :
Eğer görevi doğru anladıysam, n'nin nereden alınması gerektiği belli değil...
Cevabınız için teşekkürler! Açık sipariş sayısı n'dir . Açılış sinyali tekrarlandığında, zaten açık olan pozisyonlarda kar gereksinimi artar. Böylece haksız yere çekilmelerden kaçınırım. Bir döngüde, basit bir şekilde çözülür, ancak açma koşullarına ve ayrıca bir anahtarla yerleştirmek sakıncalıdır . Bir "faktöriyel"e ihtiyacımız var, ama toplamaya değil, çarpmaya! formül! Yukarıdaki formülü MathMax'om ile kullanırken.
 
borilunad :
Cevabınız için teşekkürler! Açık sipariş sayısı n'dir . Açılma sinyali tekrarlandığında, zaten açık olan pozisyonlarda kar gereksinimi artar. Böylece haksız yere çekilmelerden kaçınırım. Bir döngüde basit bir şekilde çözülür, ancak açma koşullarına eklemek uygun değildir. Bir "faktöriyel"e ihtiyacımız var, ama toplamaya değil, çarpmaya!
Apaçık. Peki, sipariş sayısı 5 ile sınırlı olsaydı bu şekilde karar verirdim. Bu durumda geçiş en hızlı yoldur.
 
valeryk :
Apaçık. Peki, sipariş sayısı 5 ile sınırlı olsaydı bu şekilde karar verirdim. Bu durumda geçiş en hızlı yoldur.

Ah doğru ;) ?

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

Nn = iN[n];
 
valeryk :
Apaçık. Peki, sipariş sayısı 5 ile sınırlı olsaydı bu şekilde karar verirdim. Bu durumda geçiş en hızlı yoldur.
Sadece sınırlamak istemiyorum, bu yüzden bir çeşit formül arıyorum. Belki zamanla doğacak, ama bir anahtar ve bir döngü olmadan!
 
VladislavVG :

Ah doğru ;) ?

Kabul ediyorum. Ancak örneğin 7 indeks değerini gerektiriyorsa? Bir kontrol yapmanız gerekiyor. Ve böylece her durumda hatasız.
 
borilunad :
Sadece sınırlamak istemiyorum, bu yüzden bir çeşit formül arıyorum. Belki zamanla doğacak, ama bir anahtar ve bir döngü olmadan!
Ardından yukarıdaki örnek, init içindeki döngüde diziyi doldurun . Ve maksimumdan yeniden boyutlandırın. emirler.
 
VladislavVG :

Ah doğru ;) ?

Ö! Çok teşekkürler! Daha yakın ve daha kolay! Bunu anladığım kadarıyla bir dizi ile deneyeceğim. Ancak miktar ile süresiz olarak yapmak mümkün olmayacaktır. Veya yapabilirsiniz, n== 2 ise 2. üye alınır ve n==6 veya daha fazla ise diziye daha fazla üye koyacağım. Umarım doğru anlamışımdır!

 
borilunad :

Evet, dizi, örneğin 100 veya daha büyük bir boyutla açıkça daha büyük hale getirilebilir - bu kadar çok sayıda sipariş almanız olası değildir, ancak yine de sınırlı olacaktır.

Kısıtlama olmadan gerekliyse, o zaman sadece bir döngü. Ayrı bir işlev yapın, normalde her yerde çağrılır. Hız kaybı olacaktır: ne yazık ki MCL'de satır içi İşlevler yoktur.

 
borilunad :
kancalı))
 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 );
  }