Задача.
Дан текст. Определите длину самого короткого и самого длинного слов. (Текст – это набор слов, разделенных пробелами и знаками препинания).
Итак, опишу в прозе порядок действий по решению задачи.
Для начала мы должны получить строку с клавиатуры. Когда у нас есть строка – инициализируем переменные. Представим что на данный момент максимальная длина слова равна нулю, а минимальная 50. Такие цифры выбраны дабы первое попавшееся слово стало максимальным и минимальным по длине одновременно. Так же зададим множество символов (неких стоп символов) таких как пробел и знаки препинания, которые означают конец слова.
Далее будем перебирать строку от первого до последнего символа.
Если символ не входит в множество стопсимволов, и счетчик не больше длинны строки, то пробуем задать номер стартового символа слова. «Пробуем» в данном случае означает, что мы проверяем не задан ли уже старт на данный момент.
Если же символ в стопсимволах, т.е. слово закончилось, то пытаемся посчитать длину. В данном случае «пытаемся» означает, что мы проверяем задан ли старт слова. Если задан, то длина равна текущее значение счетчика минус старт.
Далее если длина больше максимума, то максимум равен длине, если длина меньше минимума, то минимум равен длине.
Не забываем обнулить старт и двигаемся дальше по циклу. В конце выводим минимум и максимум на экран.
Реализация на Turbo Pascal 7:
program dlina_slov; var s:string; i:integer; start,dlina:integer; max,min:integer; const znaki = ['.',',',' ','!','?','-',':',';']; begin Write('Vvedite text: '); Readln(s); i:=1; start:=0; min:=50; max:=0; while i<=length(s)+1 do begin if (not(s[i] in znaki)) and (i<=length(s)) then begin if start=0 then start:=i; end else begin if start<>0 then begin dlina:= i - start; if dlina > max then max:=dlina; if dlina < min then min:=dlina; start:=0; end; end; i:=i+1; end; writeln; writeln; writeln('text: ',s); writeln('Samoe dlinnoe: ',max); writeln('Samoe korotkoe: ',min); readln; end.
Блок-схема:
Блоксхема создана с помощью редактора http://www.gliffy.com
Метки: алгоритм