No hace falta abrir 2 posts para lo mismo
Si bien, tu programa no esta del todo mal, pero haces unas vueltas que no comprendo, es como que las condiciones no estuvieran en los lugares correctos.
lees caracer
si es espacio, verifivas si la "palabra acutal" es mayor que la "palabra mas grande"
si no es espacio, sumas al contador de "palabra actual" una unidad;
var
S: String;
ICount: Integer;
CharCount: Integer;
BiggestWord: Integer;
TempCount: Integer;
begin
{leyendo la cadena}
ReadLn(S);
{si la cadena no termina en '/' es que esta mal}
if S[Length(S)] <> '/' then
begin
WriteLn('la cadena debe terminar en "/"');
Readln;
Halt;
end;
{si estamos aca, es porque la cadena termina en /}
{inicializamos los contadores}
BiggestWord := 0;
TempCount := 0;
for ICount := 1 to Length(S) do
begin
if S[ICount] = ' ' then
begin
{es espacio, nueva palabra, verificamos si la palabra
actual es mayor a la maxima}
if TempCount > BiggestWord then
BiggestWord := TempCount;
TempCount := 0;
end else
{la letra no es espacio, por lo que continua la palabra actual}
begin
TempCount := TempCount + 1;
end;
end;
WriteLn('La palabra mayor tiene ', BiggestWord, ' letras');
Readln;
end.
la idea es, vas recoriendo letra por letra y sumas esa letras a un contador
si la letra es un espacio, verificas que el contador de letras, sea mayor a la palabra mas grande, si es mayor, reasignas.
reseteas el contador de letras y se inicia el ciclo.