Код рабочий но нужно исправить ошибки но у меня ни чего не получается

[CODE]
Ошибки:
-Программа работает не корректно при наличии пробелов за последним словом
-Программа не отбрасывает слова, равные последнему, в первом пункте задания
Задание:
п.1. – Напечатать те слова, отличные от последнего слова, которые имеют максимальное количество гласных букв. Если таких слов несколько, печатать первое по порядку.
п.2. –Напечатать все слова, отличные от последнего слова, заменив все вхождения ed на ing, если такие имеются.
Код:
program labrab2p1p2;
{291003-75 ПОИТ 1-й курс Хомич С.С
Вариант 16}
var predl: string; {наше предложение}
wordp1: string; {слово п1}
wordp2: string; {слово п2}
maxword: string; {искомое слово}
ing: string; {искомое вхождения ed заменив на ing}
percent: real; {процент гласных в текущем}
maxpercent: real; {процент гласных в искомом}
glasn: set of char; {множество гласных букв}
letters: set of char; {множество всех букв}
ch: char; {очередной символ}
i,x,n,m: integer;
wln, gcount: integer; {длина и колво гласных в текущем}
stroka,pslword,rez,st1:string; {строка, последнее солово}
begin
glasn := ['A', 'E', 'I', 'U', 'O', 'a', 'e', 'i', 'u', 'o'];
letters := ['A'..'Z', 'a'..'z'];
{заполняем множества}
readln(predl);
wln := 0;
gcount := 0;
maxpercent := 0;
maxword := '';
wordp1 := '';
for i := 1 to length(predl) do
{пробегаем по всем символам}
begin
ch := predl[i];
if ch in letters then
{если очередной символ буква}
begin
wordp1:= wordp1 + ch;
{дописываем сивол к текущему слову}
wln := wln + 1;
if ch in glasn then
gcount := gcount + 1;
{увелчиваем колво букв и гласных в текущем}
end
else
{если нет то это какой-то разделитель слов}
begin
if wln > 0 then
{проверяем не будет ли деления на 0
такая ситуация может возникнуть если у нас 2 разделителя подряд}
begin
percent := gcount / wln;
{вычисляем процент}
if (percent > maxpercent) then
begin
maxword := wordp1;
maxpercent := percent;
end;
{сравниваем}
wln := 0;
gcount := 0;
wordp1:= '';
{начинаем обработку нового слова}
end;
end;
end;
pslword:=predl; {последнее слово}
n:=length(predl); {длина начальной строки}
i:=1;
while i>0 do {определение последнего слова}
begin
i:=Pos(' ',pslword);
pslword:=copy(pslword,i+1,n);
end;
i:=1;
stroka:=predl;
while i>0 do {деление строки на слова и формирование конечных строк}
begin
i:=pos(' ',stroka); {вычисление номера позиции пробела}
if i>1 then
begin
wordp2:=copy(stroka,1,i-1); {выделение части строки до пробела в отдельное слово}
x:=length(wordp2); {вычисление длины слова}
if (pos(wordp2,pslword)<>1) or (x<>(length(pslword))) then {сравнение слова с последним}
begin
m:=1;
{проверяем слово на присутствие сочетания ed}
while m>0 do {на случай, что сочетание встречается в слове не один раз}
begin
m:=pos('ed',wordp2); {вычисление позиции сочетания ed}
if m>0 then {если оно есть, то делим слово на части до ed и после}
begin
st1:=copy(wordp2,1,m-1);
wordp2:=copy(wordp2,m+2,x);
rez:=concat(rez,st1,'ing') {собираем слово}
end;
end;
ing:=concat(ing,rez,wordp2,' '); {добавляем в строку слово}
rez:='';
end;
stroka:=copy(stroka,i+1,n); {уменьшаем строку на проверенное слово}
end;
end;
writeln('Введённое предложение: ',predl); {вывод результатов}
if length(ing)>0 then
writeln('Слова в которых есть все вхождения ed на ing изменены: ',ing) else writeln('Строка пустая');
if length(maxword)>0 then
writeln('Максимальное количество гласных букв в слове: ',maxword) else writeln('Строка пустая');
end.
Результат работы программы:
Ввод данных:
edivsf fsdeds odf
Ввывод результата:
Слова в которых есть все вхождения ed на ing изменены: ingivsf fsdeds
Максимальное количество гласных букв в слове: edivsf