MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 142
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Hayır :)))
1 , 1 , 1 , 2 , 3 , 3 , 2 , 1 , 4 , 4 , 5
aynı renkteki sayıların sayısı.
Alexey Kozitsyn şu anlama geliyordu: sıralı bir dizide. Bir dizideki maksimum özdeş değer sayısı?
1 , 1 , 1 , 2 , 3 , 3 , 2 , 1 , 4 , 4 , 5
Sıralama:
1 , 1 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5
Çıktıda sayıların 4 çakışan değerini alıyoruz (tek bir örnekte 5 sayısı hiçbir şeyle eşleşmeyen bir değerdir)
Sıralamak:
1 , 1 , 1 , 2 , 3 , 3 , 2 , 1 , 4 , 4 , 5
Sıralama:
1 , 1 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5
Çıktıda sayıların 4 çakışan değerini alıyoruz (tek bir kopyadaki 5 sayısı hiçbir şeyle eşleşmeyen bir değerdir)
O zaman şuna benzer bir ses çıkar: bir dizideki yinelenen sayıların sayısını belirleyin.
Ne biri ne de diğeri.
Açıkça bilinmeyen dört numara var. İlk mesajımdaki örnekte olduğu gibi tekrar eden sayıların sayısını bulmanız gerekiyor .
sıra önemsizse, sayılar tamsayıysa ve aralık biliniyorsa, o zaman bir sayaç dizisi oluşturarak O(boyut) cinsinden hesaplama yapabilirsiniz.
ArrayResize(counter,100);
ArrayInitialize(counter,0);
for(int i=ArraySize(source)-1;i>=0;i--) {
counter[source[i]]++;
}
int pos=ArrayMaximum(counter);
PrintFormat("Чаще всего встречалось число %d, аж %d раз",pos,source[pos]);
sıra önemsizse, sayılar tamsayıysa ve aralık biliniyorsa, o zaman basitçe bir sayaç dizisi oluşturarak O(boyut) cinsinden hesaplanabilir.
ArrayResize(counter,100);
ArrayInitialize(counter,0);
for(int i=ArraySize(source)-1;i>=0;i--) {
counter[source[i]]++;
}
int pos=ArrayMaximum(counter);
PrintFormat("Чаще всего встречалось число %d, аж %d раз",pos,source[pos]);
Belki. Şu anki ifadeyle ilgili değil, kararla ilgili. Oturup karar veririm...
Garip.
Seçeneğiniz her zaman 1 verir. Bunu çözmek, kendinizinkini bulmaktan daha uzun sürer. İşte tüm tuhaflıklar ;)
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));
}
Bu da şöyle:
{
int Arr[]={ 1 , 2 , 4 , 4 , 2 , 1 , 2 , 2 , 1 , 4 , 1 , 4 , 3 , 3 , 3 , 4 , 3 , 3 , 1 , 3 , 4 , 3 , 3 };
Comment ( GetM(Arr) );
}
int GetM( int &Mas[])
{
int c= 0 ,cd= 0 ,res=- 1 ;
ArraySort (Mas);
int ArrSize= ArraySize (Mas);
for ( int i= 0 ; i<ArrSize; i++) {
for ( int x=i; x<ArrSize; x++) {
if (Mas[i]==Mas[ ArrayMinimum (Mas, WHOLE_ARRAY ,x)]) c++;
}
if (c>=cd) { // ищем первое большее ">" или максимально большее ">=" при одинаковом количестве
cd=c; // количество совпадений
res=Mas[i]; // число
}
c= 0 ;
}
return ( res /*cd*/ ); // число|количество
}