Как и любая знаковая система, азбука Морзе имеет как преимущества, так и недостатки. Среди достоинств данного кода можно выделить такие, как возможность записывать и воспроизводить сигналы при простейших устройств, возможность ручной кодировки, а также высокая защищенность от помех при условии приема сообщения на слух даже при наличии сильных радиопомех. Что касается недостатков, к ним относятся низкая скорость телеграфирования, сам код малопригоден для буквопечатающего приема, да и к тому же на передачу одного такого знака требуется в среднем около 9-10 элементарных посылок, что довольно неэкономично.
Procedure GetWord(s:string; var p:integer; var w:string; delim:string:=' '); { Получает в w слово из строки s, которое начинается не ранее позиции p. Возвращает новое значение p, указывающее на первый разделитель delim, который следует за найденным словом или 0, если такой разделитель не найден. По умолчанию слова разделяются не менее чем одним пробелом } var i,n:integer; fBreak:boolean; { флажок для прерывания циклов } begin n:=Length(s); fBreak:=False; {ищем первый символ, отличный от разделителя - начало слова } while ((p<=n) and (not fBreak)) do if (p=n) or (s[p]<>delim) then fBreak:=True else Inc(p); { ищем очередной разделитель - конец слова } if p<n then begin i:=p; Inc(p); fBreak:=False; while (p<=n) and (not fBreak) do begin if (p=n) or (s[p]=' ') then fBreak:=True else Inc(p) end; { теперь слово находится между позициями i и p } w:=Copy(s,i,p-i) end; if p>=n then p:=0 end;
function CountG(w:string):integer; { возвращает количество гласных в слове w} var i,k:integer; begin k:=0; for i:=1 to length(w) do if w[i] in ['а','е','ё','и','о','у','ы','э','ю','я'] then Inc(k); CountG:=k end;
var s,w,wmax:string; p,k,gmax:integer; begin Writeln('Введите текст, разделяя слова пробелами'); Readln(s); s:=LowerCase(s); p:=1; gmax:=0; while p>0 do begin GetWord(s,p,w); k:=CountG(w);; if gmax<k then begin gmax:=k; wmax:=w end end; if gmax>0 then Writeln('В слове "',wmax,'" максимум гласных, равный ',gmax) else Writeln('Во введенной строке гласных букв не найдено') end.
Что касается недостатков, к ним относятся низкая скорость телеграфирования, сам код малопригоден для буквопечатающего приема, да и к тому же на передачу одного такого знака требуется в среднем около 9-10 элементарных посылок, что довольно неэкономично.