DUDA TURBO PASCAL

wenas!

lo primero no se si esto va aqui, pero es que no tengo ni p*** idea donde ponerlo!jeje

haber, tengo que hacer el siguiente programa:

Completar el siguiente programa para que asigne a la variable s2 el valor de la cadena asignada previamente a s1 eliminando los caracteres de espacio en blanco que ésta pudiera contener. Por ejemplo, s2 debe tomar el valor 'JuanPerezPerez' si s1 vale 'Juan Perez Perez'

y ya me dan este codigo el cual no puedes modificar:

program espaciosenblanco;
var s1,s2:string; i:byte;
begin
write('introduce caracteres: ');
readln(s1);

(* introduce aqui tu codigo para completar el programa*)

writeln('El valor de s2 es: ',s2)
end.

entonces yo se hacerlo con un procedimiento y sale perfecto, pero como no puedes declararlo pues lo hice de esta forma:
program espaciosenblanco;
var s1,s2:string; i:byte;
begin
write('introduce caracteres: ');
readln(s1);

for i:= 1 to length(s1) do
if s1[i]=' ' then
begin
delete(s1,i,1);
i:=0;
end;
s2:=s1;


writeln('El valor de s2 es: ',s2)
end.

Entonces para todos los casos posibles funciona excepto si introduces la cadena 'a ' (es decir, que términe en espacio) de donde el programa no hace nada, vamos se pilla(un bucle infinito de esos) XD
alguna idea?

saludos!
Estoy con trancazo y no pienso, pero a bote pronto se me ocurre mejor esto:

j:=1;
for i:= 1 to length(s1) do
if s1[i]!=' ' then
begin
s2[j]:=s1[i];
j:=j+1;
end;

Como recomendación y supongo que te lo dirán los profesores que tengas, nunca debes cambiar el valor del contador que usas para avanzar en un bucle hacia atrás... no se si me explico, es que ando un poco difuso esta mañana.
paper escribió:Estoy con trancazo y no pienso, pero a bote pronto se me ocurre mejor esto:

j:=1;
for i:= 1 to length(s1) do
if s1[i]!=' ' then
begin
s2[j]:=s1[i];
j:=j+1;
end;

Como recomendación y supongo que te lo dirán los profesores que tengas, nunca debes cambiar el valor del contador que usas para avanzar en un bucle hacia atrás... no se si me explico, es que ando un poco difuso esta mañana.


vale si entiendo, pero es que no puedo declarar variables, solo puedo usar las que me dan, y me dan solo i, s1 y s2, no tengo ninguna mas XD haber si podeis ayudarme XD
Prueba esto:

for i:= 1 to length(s1) do
if s1[i]!=' ' then s2[length(s2)]:=s1[i];

Ahora mismo no se muy bien como va el pascal, quizas en lugar de length(s2) tengas que sumarle o restarle uno.

Saludos.
3 respuestas