Cualquier pregunta de un PROFI a un SUPER PROFI - 1. - página 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;   
         }   
      }
   } 
 
Muchas gracias por el código. Sin embargo, me cuesta entender cómo funciona:)
 
Has escrito correctamente que el problema debe resolverse de forma recursiva. Hay un número determinado de elementos. Mientras el elemento no sea el último, la función se introduce con un valor de masa reducido por el valor de todos los incrementos de las iteraciones anteriores. En el último elemento, simplemente calcula el último residuo e imprime.
 

¿Qué me falta en la función para que el botón no sea visible?

Es una función en una DLL:

#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);  // вернули для проверки размера
}

cuando se llama a la función desde el script - todo va perfectamente.

El gráfico en la parte superior muestra el texto "Cadena", la función en sí devuelve el número correcto de la anchura del botón 100.

Pero el botón no es visible.

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

ZS
Encontrado el problema - se olvidó de hacer UpdateWindow .
Gracias a todos :)


 
cómo desactivar las noticias en el gráfico en MT5????
 
parkhomenko:
cómo desactivar las noticias en MT5 que se muestran en el gráfico????

saben mejoraquí
 

¿Tienes alguna idea de cómo llamar al "Bloc de notas" desde MT4?

Estoy cansado de almacenar los datos en .txt y abrirlos a mano (con el ratón). Me gustaría abrir el archivo de Notepad ..МТ4\experts\files\data.txt después de completar los cálculos

gracias

 
#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);
 

¿cómo se cambia de más a menos por condición?

parece que desde el reino de la ficción, si más o menos tenía un valor de tipo entero int, podría establecer int pl = +;))

tal vez haya una opción.......

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

¿cómo puedo cambiar el más a menos por la condición?



seleccione S=1 o S=-1. entonces multiplique el valor requerido por S

por ejemplo, así:

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

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