
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"
Gracias
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


0