• Jueves 28 de Marzo de 2024, 20:31

Autor Tema:  Pequeña Ayudadita (recursividad)  (Leído 1989 veces)

Mr. Pascal

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Pequeña Ayudadita (recursividad)
« en: Viernes 2 de Febrero de 2007, 19:31 »
0
:hola: hola mis estimados colegas de solocodigo, tengo una dudita, acerca de como acceder a un arreglo de string... pues mi problema es quiero hacer un problemilla recursivo que me imprama todas las cadenas contenidas que su ultimo caracter sea un punto.

esto es lo que he hecho, pero no se porque solo me imprime la ultima cadena que esta en la ultima posicion del arreglo.
aqui esta el cod para que lo chequen  :comp:
Código: Text
  1.  
  2. procedure impcad(i:integer);
  3. var x:integer;
  4. begin
  5.     x:=length(fr[i]);
  6.     if (i=max) and (fr[i][x] = '.') then
  7.          writeln(fr[i])
  8.     else
  9.           if  fr[i][x] = '.' then
  10.              begin
  11.                 writeln(fr[i])
  12.                 impcad(i+1);
  13.              end
  14.           else
  15.                   impcad(i+1);
  16. end;
  17.  

¿Esta bien la manera en que accedo a al ultimo caracter de la frase que esta en el arreglo?  :smartass:
si hay una mejor manera de acceder me gustaria que me ilustren... :D
agradezco de antemano cualquier ayudita.-
 :hola: adiosito hasta otro capitulo

mamex

  • Miembro activo
  • **
  • Mensajes: 77
  • Nacionalidad: mx
    • Ver Perfil
Re: Pequeña Ayudadita (recursividad)
« Respuesta #1 en: Viernes 2 de Febrero de 2007, 20:18 »
0
Pues no se usar pascal, pero mi lógica me indica que debe ser así
Me imagino k max es la longitud del arreglo de strings.

Código: Text
  1.  
  2. procedure impcad(i:integer);
  3. var x:integer;
  4. begin
  5.    x:=length(fr[i]);
  6.    if i<=max then
  7.    begin
  8.          if  fr[i][x] = '.' then
  9.             begin
  10.                writeln(fr[i])
  11.                impcad(i+1);
  12.             end
  13.          else
  14.                impcad(i+1);  
  15.   end        
  16. end;
  17.  
  18.  

Espero poder ayudarte.

Mr. Pascal

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Pequeña Ayudadita (recursividad)
« Respuesta #2 en: Sábado 3 de Febrero de 2007, 16:32 »
0
Citar
Pues no se usar pascal, pero Espero poder ayudarte.

:smartass:
gracias por la ayudita me sirvio bastante.... ahora le estoy tomando mas interes a esto de la recursividad :P  B)

 :hola: hasta otro capitulo

Alpha_

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Pequeña Ayudadita (recursividad)
« Respuesta #3 en: Miércoles 7 de Marzo de 2007, 03:34 »
0
Ambos están muy bien, quizás la única mejora que podría hacerle es el de quitar la llamada recursiva del segundo nivel de if anidados, puesto que siempre se estará ejecutando.

Código: Text
  1. procedure impcad(i:integer);
  2. var x:integer;
  3. begin
  4.   x:=length(fr[i]);
  5.   if i<=max then
  6.   begin
  7.         if  fr[i][x] = '.' then
  8.               writeln(fr[i]);
  9.         impcad(i+1);  
  10.   end        
  11. end;
  12.  

Como habrás visto, Mr. Pascal, lo de la recursividad es una cuestión muy interesante, pero en ejemplos como este no es en donde se ve su verdadero potencial. Si ahora te gusta, en el futuro te va a encantar. =^_^=

PD: Yo siempre terminaba resolviendo algoritmos de manera recursiva, me he comido varios regaños por eso. xD (No son lo más eficientes)
Alpha
http]

ushedipe

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: Pequeña Ayudadita (recursividad)
« Respuesta #4 en: Miércoles 2 de Mayo de 2007, 20:29 »
0
:comp: pues no se si ésto solucione de alguna manera lo que pretenden hacer... tampoco creo que sea muy recursivo, pero en ocasiones las cosas simples se deben hacer simples.

Código: Text
  1. procedure impcad(i:integer);
  2. var
  3.   i:integer;
  4. begin
  5.   i:=0;
  6.   while i<=Length(fr) do
  7.     begin
  8.       if length(fr[i])='.' then
  9.          writeln(fr[i]);
  10.        i:=i+1;  
  11.     end        
  12. end;
  13.  

...espero que sea útil! :ph34r: