MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 143
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
olduğu gibi başlatıldı
int Strange( const T &InArray[] )
{
int Res = 1 ;
T Array[];
const int Size = ArraySize (InArray);
if (( ArrayCopy (Array, InArray) == Size) && ArraySort (Array))
{
int Tmp = 1 ;
ArrayPrint(Array);
for ( int i = 1 ; i < Size; i++)
{
if (Array[i - 1 ] != Array[i])
{
if (Tmp > Res)
Res = Tmp;
Tmp = 0 ;
}
Tmp++;
}
}
return (Res);
}
void OnStart ()
{
int Array[] = { 1 , 2 , 3 , 1 , 2 , 1 , 2 , 2 };
Print (Strange(Array));
}
İşte çıktıları:
2017.03 . 07 14 : 42 : 44.141 4
Üst satır sıralanmış girdi dizisidir, alt satır Strange() işlevinin sonucudur.
Sıralanan diziye ve renk eşleşmelerine dikkatlice bakarsak ve ardından aynı renkle birden fazla sayıyı sayarsak, şu sonucu alırız:
1 1 1 2 2 2 2 3 - toplam, 2 döndürmek gerekiyordu
Ve işlev 4 döndürdü. Yine de - ayrıca ilerleme - benim için her zaman 1 döndürdü - nasıl olduğunu anlamadım.
1 1 1 2 2 2 2 3 - toplam, 2 döndürmek gerekiyordu
Ve işlev 4 döndürdü. Yine de - ayrıca ilerleme - benim için her zaman 1 döndürdü - nasıl olduğunu anlamadım.
int Strange( const T &InArray[] )
{
int Res = 0 ;
T Array[];
const int Size = ArraySize (InArray);
if (( ArrayCopy (Array, InArray) == Size) && ArraySort (Array))
{
int Max = 0 ;
int Tmp = 0 ;
ArrayPrint(Array);
for ( int i = 0 ; i < Size - 1 ; i++)
{
Tmp++;
if ((Array[i] != Array[i + 1 ]) || (i == Size - 2 ))
{
if (Tmp > Max)
{
Max = Tmp;
Res = Array[i];
}
Tmp = 0 ;
}
}
}
return (Res);
}
void OnStart ()
{
int Array[] = { 1 , 2 , 3 , 1 , 2 , 1 , 2 , 2 , 1 , 1 , 1 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 };
Print (Strange(Array));
}
Yani sayıyı mı yoksa en sık kullanılan öğeyi mi döndürmeniz gerekiyor?
Farklı kopyaların sayısı.
Ve işleviniz ne döndürür? Çoğu maç? Ayrıca kullanışlı...
Farklı kopyaların sayısı.
Garip bir şekilde ifade ediyorsun. "0, 0, 1, 1, 2, 2" - 3?
Ve işleviniz ne döndürür? Çoğu maç?
Garip bir şekilde ifade ediyorsun. "0, 0, 1, 1, 2, 2" - 3?
Evet - üç farklı sayıdan üç eşleşme.
int Strange( const T &InArray[] )
{
int Res = 0 ;
T Array[];
const int Size = ArraySize (InArray);
if (( ArrayCopy (Array, InArray) == Size) && ArraySort (Array))
{
int Tmp = 1 ;
ArrayPrint(Array);
for ( int i = 1 ; i < Size; i++, Tmp++)
if (Array[i - 1 ] != Array[i])
{
if (Tmp > 1 )
Res++;
Tmp = 0 ;
}
if (Tmp > 1 )
Res++;
}
return (Res);
}
void OnStart ()
{
int Array[] = { 1 , 2 , 3 , 1 , 2 , 1 , 2 , 2 , 3 , 4 , 4 };
Print (Strange(Array));
}
Yani sayıyı mı yoksa en sık kullanılan öğeyi mi döndürmeniz gerekiyor? İkincisi ise, o zaman
int Strange( const T &InArray[] )
{
int Res = 0 ;
T Array[];
const int Size = ArraySize (InArray);
if (( ArrayCopy (Array, InArray) == Size) && ArraySort (Array))
{
int Max = 0 ;
int Tmp = 0 ;
ArrayPrint(Array);
for ( int i = 0 ; i < Size - 1 ; i++)
{
Tmp++;
if ((Array[i] != Array[i + 1 ]) || (i == Size - 2 ))
{
if (Tmp > Max)
{
Max = Tmp;
Res = Array[i];
}
Tmp = 0 ;
}
}
}
return (Res);
}
void OnStart ()
{
int Array[] = { 1 , 2 , 3 , 1 , 2 , 1 , 2 , 2 , 1 , 1 , 1 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 };
Print (Strange(Array));
}
Harika. Ama biraz farklı olarak - bu bir şablon işlevidir, yani:
T Strange( const T &InArray[] )
{
T Res = 0 ;
T Array[];
const int Size = ArraySize (InArray);
if (( ArrayCopy (Array, InArray) == Size) && ArraySort (Array))
{
int Max = 0 ;
int Tmp = 0 ;
ArrayPrint(Array);
for ( int i = 0 ; i < Size - 1 ; i++)
{
Tmp++;
if ((Array[i] != Array[i + 1 ]) || (i == Size - 2 ))
{
if (Tmp > Max)
{
Max = Tmp;
Res = Array[i];
}
Tmp = 0 ;
}
}
}
return (Res);
}
void OnStart ()
{
double Array[] = { 1 , 2 , 3 , 1 , 2 , 1 , 2 , 2 , 1 , 1 , 1 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 };
Print (Strange(Array));
}
int Strange( const T &InArray[] )
{
int Res = 0 ;
T Array[];
const int Size = ArraySize (InArray);
if (( ArrayCopy (Array, InArray) == Size) && ArraySort (Array))
{
int Tmp = 1 ;
ArrayPrint(Array);
for ( int i = 1 ; i < Size; i++)
{
if (Array[i - 1 ] != Array[i])
{
if (Tmp > 1 )
Res++;
Tmp = 0 ;
}
Tmp++;
}
}
return (Res);
}
void OnStart ()
{
int Array[] = { 1 , 2 , 3 , 1 , 2 , 1 , 2 , 2 };
Print (Strange(Array));
}
Bu ne döndürür?
Dizi farklı yapılırsa, bu doğru değildir:
int Strange( const T &InArray[] )
{
int Res = 0 ;
T Array[];
const int Size = ArraySize (InArray);
if (( ArrayCopy (Array, InArray) == Size) && ArraySort (Array))
{
int Tmp = 1 ;
ArrayPrint(Array);
for ( int i = 1 ; i < Size; i++)
{
if (Array[i - 1 ] != Array[i])
{
if (Tmp > 1 )
Res++;
Tmp = 0 ;
}
Tmp++;
}
}
return (Res);
}
void OnStart ()
{
int Array[] = { 1 , 2 , 3 , 1 , 2 , 1 , 2 , 2 , 1 , 1 , 1 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 };
Print (Strange(Array));
}
İadeler
2017.03 . 07 15 : 48 : 26.985 2
Tam olarak dizideki eşleşen sayıların sayısını mı arıyor? Ya da belki başka bir şey yaptın ve ben bir hata arayacağım
zaten kafam karıştı)
Bir diziniz var:
İşlev sonunda ne döndürmeli ve neden? Her sayı için eşleşme sayısı veya belirli bir maksimum sayı veya ... Bir şey yazdım , ama muhtemelen öyle değil, öyle değil mi?
Tam olarak dizideki eşleşen sayıların sayısını mı arıyor? Ya da belki başka bir şey yaptın ve ben bir hata arayacağım