Вводится строка из n символов, слова разделены одним пробелом. Найти длину самого короткого слова.
Ограничение переменной string — 256 символов, поэтому мы ограничиваем её 255 символами, и максимальное слово в строке может быть равным 255 символов, поэтому переменной min можно смело присвоить число 256. в конец строки записываем пробел, чтобы программа отработала корректно.

program zadacha_6;
var
s : string[255];
n, min, len : integer;
begin
writeln('Введите строку.');
readln(s);
s := s + ' '; {добавляем в конец пробел}
min := 256;
while pos(' ', s) > 0 do
begin
len := pos(' ', s)-1;
if len < min then min := len;
delete(s, 1, pos(' ', s));
end;
writeln('Минимальное слово = ', min);

readln;
end.

(скачать решение.)

В решении приведённом выше есть маленький недочёт, что если пользователь введёт два пробела, тогда минимальное слово будет равно нулю, попробуем исправить эту проблему. Здесь в дополнительном цикле, repeat until удаляются лишние пробелы.

program zadacha_6_b;
var
s : string[255];
n, min, len, i : integer;
begin
writeln('Введите строку.');
readln(s);
s := s + ' '; {добавляем в конец пробел}
min := 256;
i := 1;
if length(s) > 1 then
repeat
if s[i] = ' ' then
if s[i+1] = ' ' then
begin
delete(s, i+1, 1);
i := i - 1;
end;
inc(i);
until i = length(s);

while pos(' ', s) > 0 do
begin
len := pos(' ', s)-1;
if len < min then min := len;
delete(s, 1, pos(' ', s));
end;
writeln('Минимальное слово = ', min);

readln;
end.

(Скачать решение.)

Hosted by uCoz