Pascal/Turbo Pascal - Tratamiento de cadenas

   
Vista:

Tratamiento de cadenas

Publicado por Horacio (53 intervenciones) el 24/10/2015 15:09:00
1. Hacer un algoritmo que dado un string o cadena de caracteres genere una nueva cadena con las mismas palabras pero no puede haber espacios en blanco antes de la primera palabra y después de la última. Y debe haber un solo blanco entre palabras

ingreso --> " Hola mundo "
salida --> "Hola mundo"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
program untitled;
 
uses crt;
 
function ltrim(s:string):string;
var i:integer;
begin
	i := 1;
	while (s[i] = ' ') and (i <= length(s)) do begin
		i := i + 1;
	end;
	ltrim := copy(s,i,length(s));
end;
 
function rtrim(s:string):string;
var i,len:integer;
begin
	i := length(s);
	while ( i > 0) and (s[i] = ' ') do begin
		i := i - 1;
	end;
	rtrim := copy(s,1,i);
end;
 
function trim(s:string):string;
// retorna el string $s sin espacios en blanco al inicio y fin
begin
	trim := rtrim(ltrim(s));
end;
 
function newWord(s:string):string;
var i, j, len:integer; frase, palabra:string; nuevaFrase :string;
begin
	nuevaFrase := '';
	len := length(s);
	i:=1;
	s:= trim(s);
	while (i <= len) do begin
		palabra := '';
		while (s[i] <> ' ') and (i <= len) do begin
			palabra := palabra + s[i];
			i := i + 1;
		end;
		nuevaFrase := nuevaFrase + palabra + ' ';
		while (s[i] = ' ') and (i <= len) do begin
			i := i + 1;
		end;
	end;
	newWord := trim(nuevaFrase);
end;
 
var s,tok:string;ok:boolean;
	new :string;
BEGIN
	writeln('frase: ');
	readln(s);
	new := newWord(s);
	writeln('[',new,']');
END.

Gracias
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

Tratamiento de cadenas

Publicado por ramon (2072 intervenciones) el 01/11/2015 16:27:36
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{Mira esto}
 
program untitled;
   uses
      crt;
   type
     string80 = string[80];
   var
     cadena : string80;
 
 
   function modificado(tt : string80) : string80;
   var
     n, h : integer;
   begin
      n := 0;
      if tt[1] = ' ' then
      delete(tt,1,1);
      for h := 1 to length(tt) do
      if tt[h] <> ' ' then
      n := 0
    else
      n := n + 1;
      if n > 1 then
      begin
      delete(tt,n,1);
      n := 0;
      end;
      if tt[length(tt)] = ' ' then
      delete(tt,length(tt),1);
      modificado := copy(tt,1,length(tt))
   end;
 
   procedure entratexto;
   begin
      clrscr;
      write('   Entre Texto : ');
      readln(cadena);
      writeln;
      writeln(modificado(cadena));
      readkey;
   end;
 
 
 
  begin
     entratexto;
  end.
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