// Возвращает количество различных элементов массива, которых не меньше 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++;
もう、わけがわからないよ(笑)
配列があるんですね。
この関数は最終的に何を返すべきなのか、またその理由は?各数字のマッチング数、または特定の最大数、または....何か書いたが、間違っているに違いない、間違っているのだろうか?
どう説明したらいいのか...。
配列が見える。1,2,3,1,2,1,2,1,1,3,3,3,3,3,
同じ数字には同じ色で印をつける(数字が一つしかない場合は重複しない-必要ない)。
1,2,3,1,2,1 , 2 , 1 , 1 , 3 , 3 , 3 , 3 , 3 , 3,3
色の違う数字の数を数える:3 - これがその結果です。
古いコードを確認されたのですね。ダブルチェック する。
どう説明したらいいのか...。
配列が見える。1,2,3,1,2,1,2,1,1,3,3,3, 3,3,
同じ数字には同じ色で印をつける(数字が一つしかない場合、その倍はない-必要ない)。
1,2,3,1,2,1 , 2 , 1 , 1 , 3 , 3 , 3 , 3 , 3 , 3,3
色の違う数字の数を数える:3 - これがその結果です。
かもしれない)
{
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);
}
そこでは ...私は変人だ...。そこから来たのかと思ったら、別のところから来たんですね。
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));
}
まとめ
かもしれない)
まとめ
これは面白い
この表記法では、Arrayは数値型だけでなく、単純な構造体 であれば何でもよい。
もうひとつは、構造体に対するArraySortは、当然ながら機能しない。
この表記法では、Arrayは数値型だけでなく、 単純な構造体 であれば何でもよい。
もうひとつは、構造体に対するArraySortは、当然ながら機能しない。
その通り...しかし、構造は非常に複雑であるのが普通です。しかも、まだ仕分けが残っている...。
複雑なものは、オブジェクト(文字列など)を含んでいます。
MqlTickはシンプルな構造です。
MqlTradeRequest- 複雑です。
ArraySortは、単純な構造に対して簡単に書くことができます。