Пример как решить вопрос.
Все расчеты стоит засунуть в DLL для скорости работы.
CODE:char Text[1000];
int k, n, n1;
int x1=53, y1=337, x2=1260, y2=643;
int Ch[4][1000];
int PosX[4][1000];
int PosY[4][1000];
int Y[4][1000];
int X[4][1000];
int S[4][1000];
int I[4][1000];
int R[4];
int T[4];
double cor=0.5;
int Color_Text1[1]={9999507};//серый белый
int Color_Text2[1]={7654007};//зеленый фиолетовый
int Color_Text3[1]={7916785};//желтый зеленый
int Color_Text4[1]={4013255};//красный желтый
loadsymbolbase ("C:\gta\base.sib");
pause(1000);
for (n=0; n<4; n++)R[n]=0;
//серый белый
k=readtext (NUM, #Text[0], 8, 3, -1, 20, 30, #Color_Text1[0], 1, 70, -1, x1, y1, x2, y2, -1);
for (n=0; n<k; n++)
{
if (symbolcorrect(n)>cor)
{
Y[0][R[0]]=symbolypos(n);
X[0][R[0]]=symbolxpos(n);
S[0][R[0]]=symbolheight(n);
I[0][R[0]]=formatsn(Text[n]);
R[0]++;
}
}
//зеленый фиолетовый
k=readtext (NUM, #Text[0], 8, 3, -1, 20, 30, #Color_Text2[0], 1, 70, -1, x1, y1, x2, y2, -1);
for (n=0; n<k; n++)
{
if (symbolcorrect(n)>cor)
{
Y[1][R[1]]=symbolypos(n);
X[1][R[1]]=symbolxpos(n);
S[1][R[1]]=symbolheight(n);
I[1][R[1]]=formatsn(Text[n]);
R[1]++;
}
}
//желтый зеленый
k=readtext (NUM, #Text[0], 8, 3, -1, 20, 30, #Color_Text3[0], 1, 70, -1, x1, y1, x2, y2, -1);
for (n=0; n<k; n++)
{
if (symbolcorrect(n)>cor)
{
Y[2][R[2]]=symbolypos(n);
X[2][R[2]]=symbolxpos(n);
S[2][R[2]]=symbolheight(n);
I[2][R[2]]=formatsn(Text[n]);
R[2]++;
}
}
//красный желтый
k=readtext (NUM, #Text[0], 8, 3, -1, 20, 30, #Color_Text4[0], 1, 70, -1, x1, y1, x2, y2, -1);
for (n=0; n<k; n++)
{
if (symbolcorrect(n)>cor)
{
Y[3][R[3]]=symbolypos(n);
X[3][R[3]]=symbolxpos(n);
S[3][R[3]]=symbolheight(n);
I[3][R[3]]=formatsn(Text[n]);
R[3]++;
}
}
//0 1 2 3 4 5
for (n=0; n<4; n++)T[n]=0;
for (n=0; n<R[0]; n++)
{
for (n1=0; n1<R[0]; n1++)
{
if (n!=n1)
{
if (Y[0][n]-Y[0][n1]<5 && Y[0][n1]-Y[0][n]<5 && S[0][n]-S[0][n1]<5 && S[0][n1]-S[0][n]<5)
{
if (n>0){if (I[0][n]<=I[0][n-1]) goto q;}
Ch[0][T[0]]=I[0][n];
PosX[0][T[0]]=X[0][n];
PosY[0][T[0]]=Y[0][n];
T[0]++;
q:;
}
}
}
}
for (n=0; n<R[1]; n++)
{
for (n1=0; n1<R[1]; n1++)
{
if (n!=n1)
{
if (Y[1][n]-Y[1][n1]<5 && Y[1][n1]-Y[1][n]<5 && S[1][n]-S[1][n1]<5 && S[1][n1]-S[1][n]<5)
{
if (n>0){if (I[1][n]<=I[1][n-1]) goto q1;}
Ch[1][T[1]]=I[1][n];
PosX[1][T[1]]=X[1][n];
PosY[1][T[1]]=Y[1][n];
T[1]++;
q1:;
}
}
}
}
for (n=0; n<R[2]; n++)
{
for (n1=0; n1<R[2]; n1++)
{
if (n!=n1)
{
if (Y[2][n]-Y[2][n1]<5 && Y[2][n1]-Y[2][n]<5 && S[2][n]-S[2][n1]<5 && S[2][n1]-S[2][n]<5)
{
if (n>0){if (I[2][n]<=I[2][n-1]) goto q2;}
Ch[2][T[2]]=I[2][n];
PosX[2][T[2]]=X[2][n];
PosY[2][T[2]]=Y[2][n];
T[2]++;
q2:;
}
}
}
}
for (n=0; n<R[3]; n++)
{
for (n1=0; n1<R[3]; n1++)
{
if (n!=n1)
{
if (Y[3][n]-Y[3][n1]<5 && Y[3][n1]-Y[3][n]<5 && S[3][n]-S[3][n1]<5 && S[3][n1]-S[3][n]<5)
{
if (n>0){if (I[3][n]<=I[3][n-1]) goto q3;}
Ch[3][T[3]]=I[3][n];
PosX[3][T[3]]=X[3][n];
PosY[3][T[3]]=Y[3][n];
T[3]++;
q3:;
}
}
}
}
resettextout(1);
if (T[0]==0 && T[1]==0 && T[2]==0 && T[3]==0)messagebox ("не определен");
else
{
if (T[0]>=T[1] && T[0]>=T[2] && T[0]>=T[3])
{
for (n=0; n<R[0]; n++)
{
textout(n, x1+PosX[0][n], y1+PosY[0][n], format(Ch[0][n]), 0);
}
messagebox ("серый белый");
}
if (T[1]>=T[0] && T[1]>=T[2] && T[1]>=T[3])
{
for (n=0; n<R[1]; n++)
{
textout(n, x1+PosX[1][n], y1+PosY[1][n], format(Ch[1][n]), 0);
}
messagebox ("зеленый фиолетовый");
}
if (T[2]>=T[0] && T[2]>=T[1] && T[2]>=T[3])
{
for (n=0; n<R[2]; n++)
{
textout(n, x1+PosX[2][n], y1+PosY[2][n], format(Ch[2][n]), 0);
}
messagebox ("желтый зеленый");
}
if (T[3]>=T[0] && T[3]>=T[2] && T[3]>=T[1])
{
for (n=0; n<R[3]; n++)
{
textout(n, x1+PosX[3][n], y1+PosY[3][n], format(Ch[3][n]), 0);
}
messagebox ("красный желтый");
}
}