Programación General > Pascal
Pequeña Ayudadita (recursividad)
(1/1)
Mr. Pascal:
: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 --- procedure impcad(i:integer);var x:integer; begin x:=length(fr[i]); if (i=max) and (fr[i][x] = '.') then writeln(fr[i]) else if fr[i][x] = '.' then begin writeln(fr[i]) impcad(i+1); end else impcad(i+1);end;
¿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:
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 --- procedure impcad(i:integer);var x:integer; begin x:=length(fr[i]); if i<=max then begin if fr[i][x] = '.' then begin writeln(fr[i]) impcad(i+1); end else impcad(i+1); end end;
Espero poder ayudarte.
Mr. Pascal:
--- Citar ---Pues no se usar pascal, pero Espero poder ayudarte.
--- Fin de la cita ---
: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_:
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 ---procedure impcad(i:integer);var x:integer;begin x:=length(fr[i]); if i<=max then begin if fr[i][x] = '.' then writeln(fr[i]); impcad(i+1); end end;
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)
ushedipe:
: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 ---procedure impcad(i:integer);var i:integer;begin i:=0; while i<=Length(fr) do begin if length(fr[i])='.' then writeln(fr[i]); i:=i+1; end end;
...espero que sea útil! :ph34r:
Navegación
Ir a la versión completa