Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   ayuda con un ejercicio: palabra más larga (https://www.clubdelphi.com/foros/showthread.php?t=93015)

branncg 21-04-2018 00:21:41

ayuda con un ejercicio: palabra más larga
 
Hola a todos, les pido por favor que me ayuden con esto, quiero hacer una función para que devuelva la palabra más larga de una cadena, pero con recursividad,no me funciona,agradecería mucho su ayuda, les comparto mi código:

Código:

String CadMasLarga(String &x)
{ String w,y;
  if (x!="") {
        x=TrimLeft(x);
  byte n=x.Pos(' ');
  w=x.SubString(1,n-1);
        x=TrimLeft(x);
        byte n=x.Pos(' ');
  y=x.SubString(1,n-1);
        CadMasLarga(x);
        if (y.Length()>w.Length())
        w=y;
  }
 return w;
}


ecfisa 21-04-2018 19:34:24

Hola branncg.

No acostumbramos a hacer ejercicios pero como veo que ya has invertido bastante tiempo en él...

Este ejemplo es solo orientativo, te va a devolver la palabra mas larga de una frase, pero sólo reconoce al espacio (' ') como separador. Te quedará el trabajo de implementar que reconozca la coma, punto y coma, etc.
Código PHP:

AnsiString longestWord(AnsiString phrase)
{
  
int inx;
  
  if ((
inx phrase.Pos(" ")) == 0)
    return 
phrase;

  
AnsiString firstWord    phrase.SubString(1inx);
  
AnsiString restOfphrase phrase.SubString(inx 1phrase.Length());
  
AnsiString secondWord   longestWord(restOfphrase);

  return 
firstWord.Length() >= secondWord.Length() ? firstWord secondWord;


Saludos :)

mamcx 21-04-2018 20:31:58

Cita:

Empezado por branncg (Mensaje 525794)
pero con recursividad

Es esto necesario? Porque no es lo mas eficiente que se puede hacer, menos en C++

juanelo 22-04-2018 16:49:25

Cita:

Empezado por mamcx (Mensaje 525807)
Es esto necesario? Porque no es lo mas eficiente que se puede hacer, menos en C++

Es tema seguramente de tarea escolar (coincido que no tiene nada de eficiencia).
Código Delphi [-]
String CadMasLarga(String &x,String &CadenaMasLarga)
Prueba colocando la cadena mas larga en turno como parametro de la llamada recursiva, asi tendras con que comparar en la siguiente iteraccion y saber si la palabra actual es o no mas larga que la ultima "mas laga"
Saludos


La franja horaria es GMT +2. Ahora son las 10:43:49.

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