[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 57

 
Sepulca :

다음과 같이 시도하십시오.

https://docs.mql4.com/en/basis/variables/formal

두 가지 기능이 있습니다.
 // заполняет массив фракталами, найденными в пределах заданного количества баров
double FractalsUP[], FractalsDN[];
void FractalsMassive( string symb, int timeframe, int bars)
 {
   int fr, frtUP= 0 , frtDN= 0 ;
   for (fr= 3 ; fr<=bars; fr++)
   {
     if ( iFractals (symb,timeframe,MODE_UPPER,fr)> 0 )
     {
       ArrayResize (FractalsUP,frtUP+ 1 );
      FractalsUP[frtUP]= iFractals (symb,timeframe,MODE_UPPER,fr);
      frtUP++;
     }
     if ( iFractals (symb,timeframe,MODE_LOWER,fr)> 0 )
     {
       ArrayResize (FractalsDN,frtDN+ 1 );
      FractalsDN[frtDN]= iFractals (symb,timeframe,MODE_LOWER,fr);
      frtDN++;      
     }
   }
 }
double ExtremeFractalUP( double & fractalup[])
 {
   int masrange, efup;
  masrange= ArrayRange (fractalup, 1 );
  
   for (efup= 0 ; efup<masrange; efup++)
   {
     if (fractalup[efup]>fractalup[efup+ 1 ])
     {
       return (fractalup[efup]);
     }
     else continue ;
   }  
 }

EA에서 컴파일하려고 할 때 "FractalsUP - 호환되지 않는 유형" 오류가 발생합니다.

   FractalsMassive( Symbol (), 0 , 100 );
   double extr=ExtremeFractalUP(FractalsUP[]);

함수와 선언된 배열은 포함 파일에 저장됩니다.

 
silhouette :
쓰기 전에 교과서를 읽고 밑줄이 그어진 것을 보았지만 실제로 구현할 수 없었습니다. 호환되지 않는 유형에 대해 씁니다.


참조로 배열 요소 값 매개변수를 전달하는 작업 예를 보았습니다(& 접두사 포함).

 
silhouette :
두 가지 기능이 있습니다.

EA에서 컴파일하려고 할 때 "FractalsUP - 호환되지 않는 유형" 오류가 발생합니다.

함수와 선언된 배열은 포함 파일에 저장됩니다.


이런 식으로 작동해야 합니다. 최소한 오류 없이 컴파일됩니다.

 int start()
{
 double FractalsUP[], FractalsDN[];
 ExtremeFractalUP(FractalsUP);// Передаем ссылку на один массив
 ExtremeFractalUP(FractalsDN);// Передаем ссылку на другой массив
}
//
double ExtremeFractalUP( double & fractalup[]) // В параметрах указываем что будет передаваться ссылка на массив
 {
  int masrange, efup;
  masrange= ArrayRange (fractalup, 1 );
  
   for (efup= 0 ; efup<masrange; efup++)
   {
     if (fractalup[efup]>fractalup[efup+ 1 ])
     {
       return (fractalup[efup]);
     }
     else continue ;
   }  
 }
 
Sepulca :


이런 식으로 작동해야 합니다. 최소한 오류 없이 컴파일됩니다.

도움을 주셔서 감사합니다. 원리는 일종의 이해가 될 것입니다.
 

안녕하세요 Uv. 프로그래머!

내가 뭘 잘못하고 있는지 말해줘?

int 유형의 외부 변수가 있습니다. 프로그램에서 double 유형의 배열에 얼마나 많은 요소가 포함될 것인지 설정해야 합니다.

아래와 같이 하고 있는데 컴파일러에서 에러가 난다. 이미 double 타입의 외부 변수를 작성하려고 했으나 여전히 에러가 나는가?

말해 주세요.

 extern int        max_count= 4 ;

int start()
{
   static double A[max_count];

실수

 
SvSerg :

안녕하세요 Uv. 프로그래머!

내가 뭘 잘못하고 있는지 말해줘?

int 유형의 외부 변수가 있습니다. 프로그램에서 double 유형의 배열에 얼마나 많은 요소가 포함될 것인지 설정해야 합니다.

아래와 같이 하고 있는데 컴파일러에서 에러가 난다. 이미 double 타입의 외부 변수를 작성하려고 했으나 여전히 에러가 나는가?

말해 주세요.

명시적 double A[4] 로 배열을 초기화합니다 .

그런 다음 ArrayResize()로 크기를 조정합니다.

 
artmedia70 :

명시적 double A[4]로 배열을 초기화합니다.

그런 다음 ArrayResize()로 크기를 조정합니다.



고맙습니다!

저는 여기서 생각했습니다. 결국 빈 배열을 초기화하려면 double А[]; , 그러면 주기에 얼마를 넣을 수 있을 것 같습니까?

멍청한 질문에 대해 사과하지만 초보자인 저에게 어레이는 일종의 캐펫입니다.

 
SvSerg :


고맙습니다!

저는 여기서 생각했습니다. 결국 빈 배열을 초기화하려면 double А[]; , 그러면 주기에 얼마를 넣을 수 있을 것 같습니까?

멍청한 질문에 대해 사과하지만 초보자인 저에게 어레이는 일종의 캐펫입니다.

어떤 어레이에서든 필요한 만큼 많은 메모리를 집어넣을 수 있습니다. 가장 중요한 것은 크기를 변경하는 것을 잊지 않는 것입니다. 특히 배열이 비어 있는 경우.
 
artmedia70 :
어떤 어레이에서든 필요한 만큼 많은 메모리를 집어넣을 수 있습니다. 가장 중요한 것은 크기를 변경하는 것을 잊지 않는 것입니다. 특히 배열이 비어 있는 경우.


다시 한번 감사합니다! 너무 나쁜 + 넣을 수 없습니다.
 

안녕하세요!

친애하는 프로그래머! 당신 은 전문가를 작성 해야합니다.

설명이 가능합니다.

어떤 조건? 어떤 보장?

진심으로, 맥심.