Ver Mensaje Individual
  #8 (permalink)  
Antiguo 16/06/2006, 12:03
pitukilloloco
 
Fecha de Ingreso: mayo-2006
Mensajes: 40
Antigüedad: 18 años
Puntos: 0
Con la solucion que te propuso Instru resolverias el poner una cadena numerosa de if's en tu codigo, pero de cualquier manera el programa efectuaria ese numero de if's y llamaria a la funcion strcmp para cada cadena. Si tu tuvieras que comparar una cadena en , digamos 1000 nombres, entonces tendrias que efectuar 1000 comparaciones en caso de que la cadena que le dieras no se encontrara en la lista de nombres.
Otra solucion podria ser crear una maquina de estados finitos para el conjunto de nombres. Te pongo un ejemplo sencillo con tres nombres, digamos, ANA, ANASTACIA y ANDREA, y supongamos que la cadena que quieres comparar para ver si esta entre estos nombres es ANTONIO. A la maquina le vas dando letra por letra y avanza a otro estado de acuerdo a estas letras. Por ejemplo la maquina esta al principio en el estado 0. Si le das una letra distinta de 'A' no avanza hacia ningun estado y concluyes que la cadena que le estas dando no concuerda con ninguno de los tres nombres. En este caso le das la letra 'A' que es la primera de ANTONIO. La maquina avanza hacia el estado 1. En este estado la unica letra que le puedes dar para que avanze hacia el estado 2 es la letra 'N', que es el caso en la segunda letra de ANTONIO. A partir del estado 1 la maquina puede avanzar al estado 3 si le das la letra 'A' (la tercera letra de ANA y ANASTACIA) o al estado 4 si le das la letra 'D' (la tercera letra de ANDREA). En este caso la tercera letra de ANTONIO es 'T', por lo que no podrias avanzar hacia ningun estado y concluirias que la cadena ANTONIO no pertenece al conjunto de nombres.
Bueno no se si te queda claro que haciendo esta maquina no tendrias que hacer 1000 comparaciones en caso de que tuvieras 1000 nombres, claro que la maquina ocuparia un buen numero de bytes de acuerdo a la cantidad de nombres y es mas trabajo de programacion que haciendo el simple for que te propuso Instru