PROFI'den SUPERPROFI'ye kadar tüm sorularınız - 1. - sayfa 22

 
int start()
  {
//----
   int massa=100,shag=10,kol=4;
   perebor(massa,shag,kol);
//----
   return(0);
  }
//+------------------------------------------------------------------+
void perebor(int massa, int shag, int kol)
   {
   int massiv[];
   ArrayResize(massiv,kol);
   int x=kol;
   int handle = FileOpen("test.csv",FILE_WRITE,' ');
   
   recurs(massa,shag,massiv,x,kol,handle);
   FileClose(handle);
   }
void recurs  (int massa, int shag, int & massiv[], int x, int kol, int handle)
   { 
   int i,y;
   for(i=0;i<=massa;i+=shag)
      {
      if(x-1>0)
         {
         massiv[kol-x]=i;         
         recurs(massa-i,shag,massiv,x-1,kol,handle);                  
         }
      else
         {
         massiv[kol-x]=massa-i;
         for(y=0;y<kol;y++)
            {            
            FileWrite(handle,y," - ",massiv[y]);
            }
         return;   
         }   
      }
   } 
 
Kod için çok teşekkürler. Nasıl çalıştığını gerçekten anlamıyorum :)
 
Görevin özyinelemeli olarak çözülmesi gerektiğini doğru yazdınız. Belirli sayıda eleman vardır. Öğe son olmadığı sürece, önceki yinelemelerdeki tüm artışların değeri kadar azaltılmış bir kütle değeri ile fonksiyon kendisine girer. Son elemanda, kalanın basit bir son hesaplaması ve baskı.
 

düğmenin görünmemesi işlevinde neyi kaçırdım?

Bu, DLL'deki bir işlevdir:

 #define IDB_BUTTON   6500

//------------------------------------------------------------------
int __stdcall CreateBtn( int hWnd)
{
  HWND wnd=(HWND)hWnd; // хендл окна чарта
  HWND pwnd=GetParent(wnd); // получили родителя для создания кнопки
  ShowWindow(wnd, SW_HIDE); // скрыли чарт
  // создали кнопку
  HWND btn=CreateWindow( "Button" , "DLL BUTTON" , WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, 
                 15 , 15 , 100 , 100 , pwnd, (HMENU)IDB_BUTTON, (HINSTANCE)GetModuleHandle( NULL ), NULL );
  ShowWindow(btn, SW_SHOW); // показали кнопку
  UpdateWindow(btn);

  // нарисовали на ней текст (для проверки что окно кнопки существует)
  HDC hdc = GetDC(btn);
  TextOut(hdc, 0 , 0 , (LPSTR) "String" , 6 );
  ReleaseDC(btn, hdc);
  RECT Rect; 
  GetWindowRect(btn,  &Rect); // получили размер
  return (Rect.right-Rect.left);   // вернули для проверки размера
}

bir komut dosyasından bir işlev çağırırken - her şey mükemmel gider.

En üstteki grafik "Dize " metnini gösterir, işlevin kendisi düğmenin doğru genişliğini 100 döndürür.

Ama buton görünmüyor.

-------------

not
Bir sorun buldum - UpdateWindow'u yapmayı unuttum.
Herkese teşekkürler :)

 
MT5'te grafikte görüntülenen haberler nasıl devre dışı bırakılır????
 
parkhomenko :
MT5'te grafikte görüntülenen haberler nasıl devre dışı bırakılır????

burayı daha iyi bil
 

MT4'ten "Not Defteri" arama deneyimi olan var mı?

.txt'ye bilgi koymaktan ve sonra eller (fareler) ile açmaktan bıktım bile, hesaplamaların sonunda ..MT4\experts\files\data.txt dosyasını Not Defteri ile açabilecek bir kod parçası istiyorum

Teşekkür

 
#import "shell32.dll"
   int ShellExecuteA(int hwnd, string oper, string prog, string param, string dir, int show);
#import

ShellExecuteA(0, "Open", "notepad.exe", "data.txt", TerminalPath()+"\\experts\\files", 3);
 

koşula göre artı eksiye nasıl değiştirilir?

fantezi aleminden görünüyor, eğer artı veya eksi tamsayı int türünde bir değere sahip olsaydı, int pl = +;)))

belki başka bir seçenek vardır....

 if (......) + ; else -;
 
Martingeil :

koşula göre artı eksiye nasıl değiştirilir?



koşullu olarak S=1 veya S=-1'i seçin. ve ardından gerekli değeri S ile çarpın

örneğin şöyle:

 double S( bool b) 
{
   if (b) return ( 1 ); else return (- 1 ); 
}

a= 123 ;
Print (a*S(a< 0 ))
Print (a*S(a== 123 ))