Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Uso de recursividad para cambio de frases (https://www.clubdelphi.com/foros/showthread.php?t=88416)

ermac 04-06-2015 00:43:31

Uso de recursividad para cambio de frases
 
Hola quisiera saber si me dan una mano para poder hacer este proceso recursivo:
Me dan:
1) frase: Si los puedes *entender* se puede programar
2)sustituto: imaginar
ahora lo q tiene q hacer el proceso es cambiar "*entender*" por imaginar.
y me tendria q quedar esto: Si los puedes imaginar se puede programar

desde ya muchas gracias !

nlsgarcia 04-06-2015 01:11:46

ermac,

Cita:

Empezado por ermac
...hacer este proceso recursivo...frase: Si los puedes entender se puede programar...tendria que quedar esto: Si los puedes imaginar se puede programar...

Bienvenido al Club Delphi! :D

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
   S, OldPattern, NewPattern  : String;

begin

   S := 'Si los puedes entender se puede programar';
   OldPattern := 'entender';
   NewPattern := 'imaginar';

   MessageDlg(S,mtInformation,[mbOK],0);
   S := StringReplace(S, OldPattern, NewPattern,[rfReplaceAll, rfIgnoreCase]);
   MessageDlg(S,mtInformation,[mbOK],0);

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Utiliza la función StringReplace y visualiza el resultado antes y después de la misma.

Nota: Este proceso no requiere del uso de funciones recursivas.

Revisa esta información:
Espero sea útil :)

Nelson.

ermac 04-06-2015 01:15:14

Si me sirve eso! gracias
y si lo tuviera q hacer en consola? con una funcion? como se puede hacer?

Casimiro Noteví 04-06-2015 01:27:56

Cita:

Empezado por ermac (Mensaje 492865)
Si me sirve eso! gracias
y si lo tuviera q hacer en consola? con una funcion? como se puede hacer?


Pero así, copiando código ¿cómo vas a aprender?, esfuérzate un poco ;)

ermac 04-06-2015 01:33:32

no copie el codigo ! estoy tratando de hacerlo pero con una funcion recursiva q reciba una frase y sustituto, eso me sirve pero para pensar como hacerlo..
lo quiero hacer en consola.. cosa de q el usuario ingrese una "frase" y la pueda cambiar por un "Sustituto" y q lo q se quiera cambiar este delimitado por los "*" , aunq todavia no se me ocurre bien por eso pido la ayuda

nlsgarcia 04-06-2015 02:12:51

ermac,

Cita:

Empezado por ermac
...estoy tratando de hacerlo pero con una función recursiva que reciba una frase y sustituto...lo quiero hacer en consola...que el usuario ingrese una Frase y la pueda cambiar por un Sustituto...

:rolleyes:

Pregunto : ¿Por que quieres hacerlo de forma recursiva? :confused:

Revisa este código:
Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

var
   S, OldPattern, NewPattern  : String;

begin

   S := InputBox('Cambio de Frase', 'Ingrese una frase:', '');

   OldPattern := InputBox('Cambio de Frase', 'Ingrese OldPattern:', '');

   NewPattern := InputBox('Cambio de Frase', 'Ingrese NewPattern:', '');

   MessageDlg(S,mtInformation,[mbOK],0);
   S := StringReplace(S, OldPattern, NewPattern,[rfReplaceAll, rfIgnoreCase]);
   MessageDlg(S,mtInformation,[mbOK],0);

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Utiliza la función StringReplace y visualiza el resultado antes y después de la misma a nivel de consola.

Espero sea útil :)

Nelson.

nlsgarcia 04-06-2015 02:53:39

ermac,

Cita:

Empezado por ermac
...estoy tratando de hacerlo pero con una función recursiva que reciba una frase y sustituto...lo quiero hacer en consola...

Cita:

Empezado por nlsgarcia
Pregunto : ¿Por que quieres hacerlo de forma recursiva? :confused:

:rolleyes:

Revisa este código:
Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

function StringReplaceRecursive(S, OldPattern, NewPattern : String) : String;
var
   P : Integer;

begin

   P := Pos(OldPattern,S);

   if P <> 0 then
   begin
      Delete(S, P, Length(OldPattern));
      Insert(NewPattern, S, P);
      Result := StringReplaceRecursive(S, OldPattern, NewPattern);
   end
   else
      Result := S;

end;

var
   S, OldPattern, NewPattern  : String;

begin

   S := InputBox('Cambio de Frase', 'Ingrese una frase:', '');

   OldPattern := InputBox('Cambio de Frase', 'Ingrese OldPattern:', '');

   NewPattern := InputBox('Cambio de Frase', 'Ingrese NewPattern:', '');

   MessageDlg(S,mtInformation,[mbOK],0);
   S := StringReplaceRecursive(S, OldPattern, NewPattern);
   MessageDlg(S,mtInformation,[mbOK],0);

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Utiliza una función recursiva para sustituir un patrón en un string y visualiza el resultado antes y después de la misma a nivel de consola.

Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 21:56:47.

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