Определить длину самого короткого слова в строке

Задача: 

Дана строка, состоящая из слов, разделенных пробелами и знаками препинания. Определить длину самого короткого слова.

Описание переменных: 
  • w - длина очередного слова
  • min - длина самого короткого слова
Алгоритм решения задачи: 
  1. Если очередной символ строки является буквой, то увеличить значение переменной w.
  2. Иначе
    1. проверить не меньше ли значение w (при этом значение w не должно быть равно 0) чем min; если это так, то перезаписать значение min;
    2. обнулить значение w.
Программа на языке Паскаль: 

var
	s: string;
	i,w,min: byte;
 
begin
	readln(s);
	w := 0; // длина очередного слова
	min := 255;
	for i:=1 to length(s) do 
		if (s[i] >= 'a') and (s[i] <= 'z') then // if s[i] <> ' ' then в общем случае
			w := w + 1
		else begin
			if (w < min) and (w <> 0) then 
				min := w;
			w := 0	
		end;
 
	writeln('The shortest word: ', min);
end.

Пример выполнения программы:

hi! say    bigest
The shortest word: 2

Комментарии

Программка, которая ищет наибольшую комбинацию цифр в строке

Большое спасибо! Очень помогло) Чутка другое условие, поменял знак меньше на больше, min на max (>max), 'a'-'z' на '0'-'9', присвоил переменной max:=0 - получилась программка, которая ищет наибольшую комбинацию цифр в строке.
До прочтения вашей статьи не понимал как выбрать интервал символов( 'a'-'z', '0'-'9'). Большое спасибо.

Как сделать чтобы в

Как сделать чтобы в результате помимо количества символов определённого программой слава выводилось и само слово. Наприпер: трям парам парам пам
Самое короткое слово: пам 3 буквы

Задана строка символов.

Задана строка символов. Группы символов,
разделенные пробелом и не содержащие пробелов внутри себя, будем называть
словами. Вывести самое длинное слово в
строке и его длину. Например, задана
строка : ‘Я учусь программировать на
языке Турбо-Паскаль’ Результат работы программы: программировать Длина этого слова равна 15

Для русских и английский букв.

var
	s: string;
	i,w,min: byte;
 
begin
	readln(s);
	w := 0;
	min := 255;
	for i:=1 to length(s) do 
		if (s[i] >= 'a') and (s[i] <= 'z') or
		   (s[i] >= 'A') and (s[i] <= 'Z') or
		   (s[i] >= 'а') and (s[i] <= 'я') or 
		   (s[i] >= 'А') and (s[i] <= 'Я') or
		   (s[i] = 'Ё') or (s[i] = 'ё') then
			w := w + 1
		else begin
			if (w < min) and (w <> 0) then 
				min := w;
			w := 0	
		end;
 
	writeln('The shortest word: ', min);
end.