Программа для определения длины самого короткого и самого длинного слов

Так же ищут: длина, слово, блок-схема


Задача.
Дан текст. Определите длину самого короткого и самого длинного слов. (Текст – это набор слов, разделенных пробелами и знаками препинания).

Итак, опишу в прозе порядок действий по решению задачи.

Для начала мы должны получить строку с клавиатуры. Когда у нас есть строка – инициализируем переменные. Представим что на данный момент максимальная длина слова равна нулю, а минимальная 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

Метки:

Комментарии запрещены.