El problema de tener que emplear arrays (lo cual es el verdadero ejercicio) es que debes emplear tu propio algoritmo de búsqueda. Asi que debes tener una función (si deseas) que realice dicha operación. Hay diversos algoritmos, es más sencillo es a "fuerza bruta":
Código Delphi
[-]i := 1; encontrado := false; resultado := 0;
while i <= longitud and NOT encontrado do
begin
if a_buscar = vector[i]
then begin
encontrado_en := i; encontrado := True; end;
i := i + 1;
end;
if encontrado
then resultado := encontrado_en;
Para vectores pequeños puede ser útil, pero para vectores grandes hay mejores algoritmos. Sobretodo considerando si están ordenados.
El mayor problema que tienes es el grupo. Lamentablemente debes buscar grupo por grupo hasta encontrar el elemento. La alternativa puede ser buscar obligadamente en todos. Solo uno devolverá la posición (y como podrás ver... esta no es la más económica). Es decir que puedes hacer algo como:
Código Delphi
[-]if Buscar(elem,grupo1) = 0 then if Buscar(elem,grupo2) = 0 then ....
en_pos := Buscar(elem,grupo1);
...
en_pos := Buscar(elem,grupo6);
De modo que en_pos logra de cualquier manera encontrar el elemento. pero no así el grupo...
Como lo que necesitas es el número de grupos, tal vez puedas considerar hacer una matriz. O array de array. De modo que al primer array le corresponde el grupo 1, y asi en forma análoga para todos.
Es decir que Grupo[1][2] hace referencia al segundo elemento del grupo 1.
La forma de conseguir esto es:
Código Delphi
[-]
UnaMatriz := array[1..CantidadGrupos] of vector;
Y vector puede ser:
Type
Vector = array[1..la_maxima_cantidad] of char;
Entonces, puedes modificar a Buscar de modo que vaya recorriendo a cada grupo (asi consigues mantener la referencia al grupo) y dentro de cada grupo los elementos.
Hay muchas alternativas. Tu evalua la que te resulte más conveniente.
Si pudieras emplear conjuntos la cosa sería más facil.
Saludos,