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