Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Codificar un string en Delphi. (https://www.clubdelphi.com/foros/showthread.php?t=83473)

napsterk89 21-06-2013 14:39:35

Codificar un string en Delphi.
 
Hola, hace muy poco estoy aprendiendo a programar en Delphi. Actualmente estoy cursando una carrera de Técnico en Programación y me estoy metiendo en el tema.
Tengo un problema en el cual se me acabaron las ideas y necesito algo de ayuda. Si alguién tiene alguna idea para darme estaría agradecido...

Necesito hacer un programa a el cual cuando le ingrese un texto tome todas las palabras pares e intercambie su primera y última letra. Por ejemplo, si ingreso "El día está lluvioso" me devuelva "Le día áste Oluviosl".

Hasta ahora tengo esto, obviamente no funciona pero tiene cosas que sirven, solo no se como "ordenarlo" para hacerlo funcionar.
Una cosa más. En este prog no me permiten el uso de Arrays.
Gracias!




Código Delphi [-]
program ASD;

uses
  sysutils,
  dialogs;

Var TEXTO,car1,PALABRA,car2,car,mensaje:string; i,c:integer;

BEGIN

Mensaje:=INPUTBOX('Ingresar mensaje','Ingrese un mensaje','');
TEXTO:='';
FOR i:=1 TO Length(Mensaje) DO
Begin
CAR:=COPY(Mensaje,i,1);
TEXTO:=TEXTO+CAR;
End;
  IF (CAR=' ') AND (Length(texto) MOD 2 = 0 )
      THEN
           BEGIN
           CAR1:=COPY(texto,1,1);
           DELETE(texto, 1, 1);
           CAR2:=COPY(texto,Length(texto), 1);
           DELETE(texto,Length(texto),1);
           TEXTO:= CAR2+texto+CAR1;
           end;

SHOWMESSAGE(TEXTO);


end.

Alejandro73 21-06-2013 16:39:56

Estimado

Para que necesitas realizar lo que comentas, es parte de una tarea de algun ramo?

Saludos

maeyanes 21-06-2013 16:55:33

Hola...

Prueba con esto:

Código Delphi [-]
program ASD;

uses
  sysutils, dialogs;

Var
  Texto: string;
  Car: string;
  Car1: string;
  Car2: string;
  Palabra: string;
  Mensaje: string; 
  I: Integer;

begin
  Mensaje := InputBox('Ingresar mensaje', 'Ingrese un mensaje', '');
  Texto := '';
  // Recorremos todo el mensaje
  For := 1 to Length(Mensaje) do
  begin
    // Obtenemos el siguiente caracter
    Car := Copy(Mensaje, I, 1);
    // Si no es un espacio en blanco, lo concatenamos con Texto
    if Texto <> ' ' then
      Texto := Texto + Car
    else
      // Si la longitud de la palabra es par, hacemos el intercambio
      if Length(Texto) mod 2 = 0 then
      begin
        Car1 := Copy(Texto, 1, 1);
        Palabra := Copy(Texto, 2, Length(Texto) - 1);
        Car2 := Copy(Texto, Length(Texto), 1);
        Palabra := Car2 + Palabra + Car1;
        ShowMessage(Palabra);
        Texto := ''
      end
  end
end.

napsterk89 21-06-2013 16:57:13

En realidad me lo tomaron en un examen de "Introducción a la Programación" y no lo supe resolver. Mis conocimientos sobre Delphi son muy básicos pero me interesa mucho. Supuestamente tengo el conocimiento para resolverlo, pero la verdad es que estoy careciendo de ideas xD

napsterk89 21-06-2013 17:01:35

Cita:

Empezado por maeyanes (Mensaje 462581)
Hola...

Prueba con esto:

Código Delphi [-]
program ASD;

uses
  sysutils, dialogs;

Var
  Texto: string;
  Car: string;
  Car1: string;
  Car2: string;
  Palabra: string;
  Mensaje: string; 
  I: Integer;

begin
  Mensaje := InputBox('Ingresar mensaje', 'Ingrese un mensaje', '');
  Texto := '';
  // Recorremos todo el mensaje
  For := 1 to Length(Mensaje) do
  begin
    // Obtenemos el siguiente caracter
    Car := Copy(Mensaje, I, 1);
    // Si no es un espacio en blanco, lo concatenamos con Texto
    if Texto <> ' ' then
      Texto := Texto + Car
    else
      // Si la longitud de la palabra es par, hacemos el intercambio
      if Length(Texto) mod 2 = 0 then
      begin
        Car1 := Copy(Texto, 1, 1);
        Palabra := Copy(Texto, 2, Length(Texto) - 1);
        Car2 := Copy(Texto, Length(Texto), 1);
        Palabra := Car2 + Palabra + Car1;
        ShowMessage(Palabra);
        Texto := ''
      end
  end
end.


Probé pero ingreso el texto y queda en un loop o algo así porque no da ningún resultado. Gracias igualmente, mientras sigo intentando xD

"Palabra := Copy(Texto, 2, Length(Texto) - 1);" eso es una buena idea en lugar de usar el Delete, no se me había ocurrido!

maeyanes 21-06-2013 17:42:21

Hola...

El código anterior lo escribí al vuelo y basándome en el código que tenías, así que tiene algunos errores...

La línea Palabra := Copy(Texto, 2, Length(Texto) - 1) en realidad debería decir: Palabra := Copy(Texto, 2, Length(Texto) - 2), para que obtenga la subcadena sin el primer y último caracter.

Ahora, esta es una versión ya comprobada:

Código Delphi [-]
var
  C: string;
  C1: string;
  C2: string;
  Texto: string;
  Palabra: string;
  Mensaje: string;
  I: Integer;

begin
  Texto := InputBox('Ingresar mensaje', 'Ingrese un mensaje', '');
  Palabra := '';
  for I := 1 to Length(Texto) do
  begin
    C := Copy(Texto, I, 1);
    // Vamos formando la palabra a analizar
    if C <> ' ' then
      Palabra := Palabra + C;
    // Si es un espacio en blanco o ya llegamos al final del texto
    if ((C = ' ') or (I = Length(Texto))) then
    begin
      // Si la longitud es par, hacemos el intercambio
      if Length(Palabra) mod 2 = 0 then
      begin
        // Obtenemos el primer caracter
        C1 := Copy(Palabra, 1, 1);
        // Obtenemos el último caracter
        C2 := Copy(Palabra, Length(Palabra), 1);
        // Obtenemos la subcadena sin el primer y último caracter
        Palabra := Copy(Palabra, 2, Length(Palabra) - 2);
        // Concatenamos la cadena con el primer y último caracteres invertidos
        Palabra := C2 + Palabra + C1
      end;
      // Armamos el mensaje a mostrar
      Mensaje := Mensaje + ' ' + Palabra;
      Palabra := ''
    end
  end;
  // Mostramos el mensaje ya procesado (Trim elimina los espacios en blanco al inicio y final de la cadena)
  ShowMessage(Trim(Mensaje))


Saludos...

napsterk89 21-06-2013 18:11:56

:D Funciona perfecto! Muchas gracias, más tardo lo miro más detenidamente así capto bien la idea, me hubiese gustado deducirlo solo pero necesito aprender eso porque seguro me lo toman en un examen dentro de pocos días. Muchas gracias por la ayuda!

funkybahiense 28-06-2013 18:54:40

Hola napster! cual de todos mis compañeros sos? en el recu nos tomaron otro mas facil!

Casimiro Notevi 28-06-2013 19:15:50

Cita:

Empezado por funkybahiense (Mensaje 462924)
!

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)


La franja horaria es GMT +2. Ahora son las 03:04:04.

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