Pascal/Turbo Pascal - Eliminar espacios en blanco de una cadena

 
Vista:

Eliminar espacios en blanco de una cadena

Publicado por LuisITIG (12 intervenciones) el 27/02/2007 23:07:33
Hola,llevo toda la tarde con este problema, me piden un programa que solicite una cadena de caracteres al usuario y que elimine los espacios en blanco y signos de puntuacion de esa cadena.
He probado de varias formas y de ninguna de ellas consigo el resultado que espero.
Si podeis echarme un cable...
Este es el codigo que he hecho (la parte de packed array es una prueba que hice anteriormente y tampoco consegui)
Un saludo y gracias a todos

program Eliminarblancos;

{$APPTYPE CONSOLE}

uses
SysUtils;

TYPE
cadena_pedida = PACKED ARRAY [1..100] of char;
VAR
i,j:integer;
matriz: cadena_pedida;

begin
write('escriba una frase: ');
for i:=1 to 100 do
read(matriz[i]);

for j:=1 to 100 do

writeln(matriz[j]);

readln;
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Eliminar espacios en blanco de una cadena

Publicado por M@rceloL (7 intervenciones) el 27/02/2007 23:21:45
Bueno, básicamente uno recorre la cadena y hace algo como:

for Ind:=1 to 100 do
if (Matriz[Ind]<>'.') and (Matriz[Ind]<>',') and (Matriz[Ind]<>' ') then
write(Matriz[Ind]);

Nota: El último Matriz[Ind]<>' ' tiene un espacio entre las dos comillas.

En esencia lo que se hace es recorrer el arreglo fijándonos que el caracter en la posición no sea un caracter de esos.

Otra forma (más prolija) de hacerlo sería:

for Ind:=1 to 100 do
if not Matriz[Ind] in ['.', ',', '.', ' '] then
writeln(Matriz[Ind]);

El "in" es un operador de conjunto, el conjunto es lo que está entre corchetes. El "in" nos dice si algo está en el conjunto.

Espero te aclare, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar espacios en blanco de una cadena

Publicado por LuisITIG (12 intervenciones) el 27/02/2007 23:34:04
Tu mail es el que sale ahi? podria agregarte?
Mi problema está en como leer la cadena que introduce el usuario, y como almacenarla en un array en un string...
Un saludo y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar espacios en blanco de una cadena

Publicado por M@rceloL (152 intervenciones) el 27/02/2007 23:58:23
No sé por qué estás leyendo en un arreglo en vez de leer en una cadena, pero bueno. Sería algo así:

Para leer por teclado:

for ind:=1 to 100 do Matriz[ind]:=readkey;

El problema con este enfoque es cuando la cadena a ingresar tiene menos de 100 caracteres. En este caso deberías terminar el ingreso con alguna "letra clave".

Esto es medio complicado largo de explicar, si querés preguntá de nuevo y te digo.

Para pasar a una cadena:

var Cadena:string;

begin
Cadena:='';
for ind:=1 to 100 do Cadena:=Cadena+Matriz[Ind];
end;

Pero, sostengo, es mucho más fácil leer directamente en un string.

Algo como ReadLn(Cadena) y listo.

Agregame, no hay drama. Aunque no suelo navegar mucho, te aconsejo que me mandes un correo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar espacios en blanco de una cadena

Publicado por LuisITIG (12 intervenciones) el 28/02/2007 00:11:20
program projet2;

{$APPTYPE CONSOLE}

uses
SysUtils;

VAR
i,j:integer;
cadena:String;

begin
write('escriba una frase: ');
readln(cadena);

writeln('la cadena es: ',cadena);

readln;
end.

Este es el codigo que he puesto, mi problema ahora es saber como puedo ir leyendo el String caracter p ocaracter para asi poder quitarle los espacios y signos de puntuación...
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar espacios en blanco de una cadena

Publicado por Carlos Guimaraenz (265 intervenciones) el 28/02/2007 03:35:02
Hola Luis... para recorrer un string, puedes usar:

for i:=1 to length(cadena) do
begin
write(cadena[i]);
end;

Con cadena[x] accedes al caracter en la posición x del string.

Un abrazo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar espacios en blanco de una cadena

Publicado por maria (2 intervenciones) el 05/12/2007 20:51:40
ola me podeis ayudar intanto eliminar los espacios de una cadena
tengo lo siguiente:
var s1, s2:string; i:byte;
begin
write ('introduce una cadena de caracteres: ');


writeln´'el valor de s2 es ', s2);
end.
agradeceria muxo la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar