Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 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
  #2  
Antiguo 22-08-2007
Avatar de gerupc
gerupc gerupc is offline
Miembro
 
Registrado: jul 2007
Ubicación: Universidad de Deusto
Posts: 61
Poder: 17
gerupc Va por buen camino
Smile

Hola,

no sabes cuanto te agradezco tu esfuerzo y ayuda. Gran explicación.

Bueno, voy a practicarlo y a retorcerme un poquito la cabeza y ya te contaré qué tal

Un saludo,

Geru.
__________________
Mi Blog
---------------------
Universidad de Deusto
ESIDE-Escuela Superior de Ingenieros Deusto
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
programa para ver en que direccion del registro de windows escribe un programa? JuanErasmo Varios 1 09-11-2006 20:42:05
arrays nenufer Varios 7 13-05-2006 21:44:51
Duda sobre version de un programa escrito en delphi Codexfk Varios 6 17-11-2005 20:29:38
Soundex para castellano jam Varios 5 20-07-2005 00:35:31
¿ayuda para un programa para el msn kaiser_robert Internet 1 15-06-2005 20:52:07


La franja horaria es GMT +2. Ahora son las 15:53:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi