Justificar un texto en pascal

como puedo justificar un texto a través de espacios en blanco a un tamaño dado por el usuario:

ejemplo:

texto:Este es un texto de prueba

tamaño a justificar:40

como se puede observar el texto original contiene 26 caracteres incluyendo sus espacios originales y se quiere que la cadena resultante tenga 40 como tamaño final.bien la idea es que se justifique el texto adicionando espacios al texto progresivamentem, es decir en el ejemplo el resultado debería ser:

Este....es....un....texto....de...prueba

como se observa los espacios a agregar al texto serian 40-26= 14 y se distribuyen por cada pasada de aun espacio adicional a los que ya tiene el texto, es decir en la primera pasada la frase seria:

Este..es..un..texto..de..prueba

en la segunda pasada debería ser:

Este...es...un...texto...de...prueba

y en la tercera pasada para el ejemplo que es cuando se agotan los 14 espacios a añadir seria:

Este....es....un....texto...prueba

espero por favor me puedan ayudar yo he hecho esto lo pueden probar pero aun no me sale:

program AnyadirEspacios;
uses
crt;
var
auxiliar,texto: string;
espacios,LongNueva,i: integer;
begin
clrscr;
{ Pedir texto }
writeLn('escriba un texto:');
readLn(texto);
{Pedir nueva longitud }
repeat
writeLn('escriba un numero mayor a ',length(texto), ': ');
readLn(LongNueva);
until(LongNueva > length(texto));
{Y rellenar con espacios }
espacios := LongNueva - length(texto);
repeat
auxiliar := '';
for i := 1 to length(texto) do
begin
if texto  ' ' then 
auxiliar := auxiliar + texto
else { si texto es un espacio }
begin
espacios := espacios - 1;
if (espacios > 0) 
and (i  ' ') { Y es ultimo espacio del bloque }
then
auxiliar := auxiliar + ' '
else { Si es espacio, pero no ultimo del bloque, no debo duplicar }
auxiliar := auxiliar + texto;
end
end;
texto := auxiliar; 
until (espacios 

1 respuesta

Respuesta
1

Te propongo la siguiente solución:

Uses CRT;
var
auxcad, CADENA, CADENANUEVA : String;
I,J : Integer;
espacios,que : integer;
begin
clrscr;
k:=0;
i:=0;
Writeln('Introduzca la cadena: ');
readln(cadena);
writeln('Nueva longitud: ');
readln(J);
cadenanueva:=cadena;
espacios:=j-length(cadena);
While k<espacios do
begin
i:=pos(' ',cadena);
insert(' ',cadenanueva,i);
delete(cadena,1,i );
k:=k+1;
end;
writeln(cadenanueva);
readln;
end.

Te agradecería que si viste mi respuesta y no tienes ninguna otra duda finalices la pregunta dándole la calificación que creas conveniente.

Gracias compañero, disculpa que antes no lo había hecho la verdad no veía de donde hacer la valoración y darte las gracias pero ahora yo pude y te lo agradezco inmensamente, me sirvió por que a partir de tu planteamiento pude solucionarlo gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas