De momento he llegado hasta aquí:
Código Delphi
[-]CONST
espacio=' ';
maxpal=25;
maxcar=15;
TYPE
palabra=STRING[maxcar];
cadenapal=ARRAY[1..maxpal] OF palabra;
long_pal=0..maxpal;
long_car=0..maxcar;
VAR
palalabra;
frase:STRING;
arraypal:cadenapal;
npal:long_pal;
ncar:long_car;
procedure vector_palabras (var s:STRING);
var
posicion:cadenapal;
num:long_pal;
n:integer;
posic:long_car;
begin
num:=0;
repeat
n:=1;
**WHILE n<=length(s) AND s[n] DO n=n+1;**
delete(s,1,n-1);
posic:=pos(espacio,s);
IF posic<>0 THEN
begin
num:=num+1;
posicion[num]:=copy(s,1,posic-1);
delete(s,1,posic);
end;
until posic=0;
**IF s<>' ' THEN**
begin
num:=num+1;
posicion[num]:=s;
end;
end;
procedure mostrar_vector(var c:cadenapal;longitud:long_pal);
var
r:long_pal;
begin
FOR r:=1 TO longitud DO
write(c[r],'//');
writeln;
end;
He puesto asteriscos para diferenciar dónde tengo dudas, en la primera linea marcada el Lazarus me da error y no entiendo a qué se debe, y en la segunda linea marcada no se muy bien cómo poner "si s es mayor o menor que la última palabra".
Gracias Caral por tu respuesta.
Muchas gracias por vuestra ayuda!