Ver Mensaje Individual
  #8  
Antiguo 22-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
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; //guardamos la posicion
                encontrado := True; // paramos la busqueda
              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 // no lo encontró
   then if Buscar(elem,grupo2) = 0 // no lo encontró
             then ....

// O la otra alternativa:
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,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 22-08-2007 a las 20:08:18. Razón: corrección del algoritmo buscar
Responder Con Cita