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

Задача

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

Решение

 

Описание переменных: 

  • 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

 

Тема

Строки

Уровень

Комбинированные задачи

Комментарии

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

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.