Was sollte die Funktion letztendlich zurückgeben und warum? Die Anzahl der Treffer für jede Zahl oder eine bestimmte Höchstzahl oder ... Habe ich etwas geschrieben, aber es muss falsch sein, und falsch?
Ich weiß nicht, wie ich es erklären soll...
Wir sehen ein Array:1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, Wir markieren identische Zahlen mit der gleichen Farbe (wenn es nur eine Zahl gibt, gibt es kein Doppel dafür - es wird nicht benötigt): 1, 2, 3, 1, 2, 1,2,2, 1,1,1, 3,3, 3,3,3, 3,3,3, 3, 3, 3, 3,3 Zähle die Anzahl der Zahlen mit verschiedenen Farben: 3 - das ist das Ergebnis.
Wir sehen ein Array:1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, Wir markieren identische Zahlen mit der gleichen Farbe (wenn es nur eine Zahl gibt, gibt es kein Doppel dafür - es wird nicht benötigt): 1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3,3, 3,3,3, 3, 3,3, 3, 3, 3, 3,3 Zähle die Anzahl der Zahlen mit verschiedenen Farben: 3 - das ist das Ergebnis.
Artyom Trishkin: Dort ... Ich bin ein komischer Kauz... Ich dachte, es käme von dort, aber es kam von woanders.
Verallgemeinert
// Возвращает количество различных элементов массива, которых не меньше Repeat template <typename T> int Strange( const T &InArray[], constint Repeat = 2 ) { int Res = 0;
T Array[];
constint Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array)) { int Tmp = 1;
for (int i = 1; i < Size; i++, Tmp++) if (Array[i - 1] != Array[i]) // если будут структуры, то есть более универсальная запись { if (Tmp >= Repeat) Res++;
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Ich bin schon verwirrt)
Sie haben ein Array:
Was sollte die Funktion letztendlich zurückgeben und warum? Die Anzahl der Treffer für jede Zahl oder eine bestimmte Höchstzahl oder ... Habe ich etwas geschrieben, aber es muss falsch sein, und falsch?
Ich weiß nicht, wie ich es erklären soll...
Wir sehen ein Array:1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
Wir markieren identische Zahlen mit der gleichen Farbe (wenn es nur eine Zahl gibt, gibt es kein Doppel dafür - es wird nicht benötigt):
1, 2, 3, 1, 2, 1 , 2 , 2, 1 , 1 , 1, 3 , 3 , 3, 3 , 3 , 3, 3 , 3 , 3, 3, 3, 3,3
Zähle die Anzahl der Zahlen mit verschiedenen Farben: 3 - das ist das Ergebnis.
Sie haben den alten Code überprüft. Überprüfen Sie es doppelt.
Ich weiß nicht, wie ich es erklären soll...
Wir sehen ein Array:1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
Wir markieren identische Zahlen mit der gleichen Farbe (wenn es nur eine Zahl gibt, gibt es kein Doppel dafür - es wird nicht benötigt):
1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3 , 3 , 3, 3 , 3 , 3, 3, 3 , 3, 3, 3, 3,3
Zähle die Anzahl der Zahlen mit verschiedenen Farben: 3 - das ist das Ergebnis.
Vielleicht)
{
int Arr[]={1, 2, 3, 1, 2, 1, 2, 2, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
Comment( GetM(Arr) );
}
int GetM(int &Mas[])
{
int MasTemp[][2]; // Временный массив
int c=0,t=0;
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>0) {
t++;
ArrayResize(MasTemp,t);
MasTemp[t-1][0]= c;
MasTemp[t-1][1]= Mas[i];
}
c=0;
}
int ArrRange=ArrayRange(MasTemp,0);
if(ArrRange>0) {
ArraySort(MasTemp);
// Comment("Цифра: ",MasTemp[ArrRange-1][1],", Количество: ",MasTemp[ArrRange-1][0]);
return( MasTemp[ArrRange-1][1] );
}
return(-1);
}
Dort ... Ich bin ein komischer Kauz... Ich dachte, es käme von dort, aber es kam von woanders.
template <typename T>
int Strange( const T &InArray[], const int Repeat = 2 )
{
int Res = 0;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Tmp = 1;
for (int i = 1; i < Size; i++, Tmp++)
if (Array[i - 1] != Array[i]) // если будут структуры, то есть более универсальная запись
{
if (Tmp >= Repeat)
Res++;
Tmp = 0;
}
if (Tmp >= Repeat)
Res++;
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4};
for (int i = 1; i <= 4; i++)
Print(Strange(Array, i));
}
Zusammenfassend
Vielleicht)
Zusammengefasst von
Das ist interessant
Mit dieser Notation kann ein Array nicht nur ein numerischer Typ sein, sondern eine beliebige einfache Struktur.
Eine andere Sache ist, dass ArraySort für Strukturen, natürlich, nicht funktioniert.
Mit dieser Notation kann ein Array nicht nur ein numerischer Typ sein, sondern eine beliebige einfache Struktur.
Eine andere Sache ist, dass ArraySort für Strukturen, natürlich, nicht funktioniert.
Ganz genau... Aber die Strukturen sind in der Regel sehr komplex. Und die müssen noch sortiert werden...
Komplexe enthalten Objekte (z. B. Zeichenketten).
MqlTick ist eine einfache Struktur.
MqlTradeRequest - komplex.
ArraySort kann leicht für einfache Strukturen geschrieben werden.