Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: rdzlcs en 31 Diciembre 2010, 02:35 am



Título: Algoritmo de Fuerza bruta...
Publicado por: rdzlcs en 31 Diciembre 2010, 02:35 am
Hola amigos, acá les traigo el algoritmo de fuerza bruta...

Código:
function fuerzabruta : integer;
                 var i, j : integer;
                 begin
                     i := 1;
                     j := 1;
                     repeat
                          if a[i] := p[j] then begin
                                                i := i + 1;
                                                j := j + 1;
                                            end
                                            else   begin
                                               i := 1 - j + 2;
                                               j := 1;
                                           end;
                 
                    until j > M  or i > N;
                    if j > M then fuerzabruta := i - M
                               else  fuerzabruta := i;
               end; 

El método obvio para la búsqueda de un patrón consiste en chequear cada posible posición en el texto en donde el patrón puede encontrarse. El programa busca de esta forma la ocurrencia del patrón p[1..M] en el string de texto a [1..N]

Bueno este algoritmo estaba, el un libro que leí hace un tiempo, que se llama, Algoritmos, datos, y programas....

SAludos




Título: Re: Algoritmo de Fuerza bruta...
Publicado por: Ferno en 31 Diciembre 2010, 03:07 am
Me supongo que en la condición, en vez de ":=" iría un "=". verdad?


Título: Re: Algoritmo de Fuerza bruta...
Publicado por: rdzlcs en 31 Diciembre 2010, 03:09 am
Me supongo que en la condición, en vez de ":=" iría un "=". verdad?

Es pascal, y no C, en pascal para asignarles valores a las variables se usa :=..

SAludos


Título: Re: Algoritmo de Fuerza bruta...
Publicado por: Khronos14 en 31 Diciembre 2010, 16:19 pm
Me supongo que en la condición, en vez de ":=" iría un "=". verdad?

Pero Ferno se refiere a una condición, estás usando el operador de asignación en una condición.

Código:
if a[i] := p[j] then begin //sería =

Además, aquí creo que los paréntesis son necesarios.

Código:
until (j > M)  or (i > N);


Para devolver un valor con una función puedes usar result, en vez del nombre de la función.


Título: Re: Algoritmo de Fuerza bruta...
Publicado por: rdzlcs en 31 Diciembre 2010, 16:26 pm
Pero Ferno se refiere a una condición, estás usando el operador de asignación en una condición.

Código:
if a[i] := p[j] then begin //sería =

Además, aquí creo que los paréntesis son necesarios.

Código:
until (j > M)  or (i > N);


Para devolver un valor con una función puedes usar result, en vez del nombre de la función.

Muchas Gracias!!

Siempre ha cada segundo se aprende algo...

SAludos..

Feliz Año