Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 143
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ha funzionato così com'è.
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));
}
Questo è quello che dà:
2017.03.07 14:42:44.141 4
La linea superiore è l'array di input ordinato, la linea inferiore è il risultato di Strange().
Se guardiamo attentamente la matrice ordinata, e segniamo con il colore le corrispondenze, e poi contiamo il numero di numeri più di uno con lo stesso colore, otteniamo il risultato:
1 1 1 1 2 2 2 2 3- totale , avresti dovuto restituire 2
E la funzione ha restituito 4. Anche se - anche il progresso - con me è sempre tornato 1 - come così - non ha capito.
1 1 1 1 2 2 22 3 - in totale , avrebbe dovuto restituire 2
E la funzione ha restituito 4. Anche se - anche il progresso - con me è sempre tornato 1 - come così - non ha capito.
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));
}
Vuoi restituire il numero o la voce più frequente?
Il numero di riprese diverse.
Cosa restituisce la vostra funzione? Il più alto numero di partite? Anche questa è una cosa utile...
Il numero di riprese diverse.
Lei lo formula in modo strano. "0, 0, 1, 1, 2, 2" - 3?
Cosa restituisce la vostra funzione? Il più alto numero di partite?
Lei lo formula in modo strano. "0, 0, 1, 1, 2, 2" - 3?
Sì - tre partite di tre numeri diversi.
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));
}
Quindi vuoi restituire il numero o l'elemento più frequente? Se quest'ultimo, allora
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));
}
Fico. Ma un po' diverso - è una funzione template, giusto:
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));
}
Cosa restituisce questo?
Se fai l'array in modo diverso, non è corretto.
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));
}
Ritorna.
2017.03.07 15:48:26.985 2
Cerca esattamente il numero di numeri corrispondenti nell'array? O forse hai fatto qualcosa di diverso, e cercherò un errore
Sono già confuso)
Avete un array:
Cosa dovrebbe restituire alla fine la funzione e perché? Il numero di partite per ogni numero, o un numero massimo specifico, o ... Ho scritto qualcosa, ma deve essere sbagliato, e sbagliato?
Cerca esattamente il numero di numeri corrispondenti nell'array? O forse hai fatto qualcos'altro, e cercherò un errore.