Основы алгоритмизации и программирования. Часть третья. Структурированные типы данных. Асламова В.С - 31 стр.

UptoLike

61
var a,t:string; L,d,p: byte;
begin writeln (ввод текста);
readln(t);
d:=length(t);
t:=t+_;
while d>50 do begin
a:=_; L:=0; p:=pos(_,t);
Рис.7. Блок-схема примера 14 while L+p<=50 do begin
a:= a+ copy(t,1,p);
L:= L+p; d:=d-L;
delete(t,1,p);
p:= pos( ,t);
end;
writeln(a);
end;
writeln(t);
end.
Для «очистки» переменной a
присваиваем пустую строку
Ввод t
t:=t+
_
d:=length(t)
конец
p:=pos(
_,t)
a:=
_
, L:=0
a:=a+copy(t, 1, p)
L:=L+p
delete(t, 1, p)
p:= pos(
_, t)
d:=d-L
начало
нет
d>50
Печать t
да
L+p<=50
нет
да
Печать аa
62
Пример 15:
Выбрать из текста слова, в которых первая буква совпадает с
последней. Слова в тексте разделены пробелами.
Обозначение: t – текст;
p–признак {0–последовательность не букв, 1–последовательность букв};
b – первая буква слова;
h – позиция начала слова;
i – номер элемента строки;
L – длина текста.
Коды строчных русских букв не упорядочены: буквам от а до п
соответствуют коды 160÷175; буквам от р до я - коды 224÷239; прописным
буквам от А до Я-запоминаем коды 128÷159.
var t:string; b:char; i,L,p,h:byte;
begin
readln(t);
t:= t+_;
L:= length(t);
p:=0;
for i:=1 to L do begin {проверка: является ли символ русской
буквой}
if (ord(t[i])>=128) and (ord(t[i])<=175) or
(ord(t[i])>=224) and (ord(t[i])<=239)
then begin
if p=0 then begin
p:=1;
b:= t[i]; { запоминаем первую букву слова}
h:= i; {запоминаем позицию начала слова}
end;
end
else begin
if p<>0 then begin
if b= t[i-1] then
writeln(copy(t,h,i-h); {печать слова}
end;
p:=0;
end;
end;
end.
                                                                                            Пример 15:
                     начало                                                                Выбрать из текста слова, в которых первая буква совпадает с
                                                                                    последней. Слова в тексте разделены пробелами.
                     Ввод t                                                            Обозначение: t – текст;
                                                                                       p–признак {0–последовательность не букв, 1–последовательность букв};
                     t:=t+′_′                                                          b – первая буква слова;
                   d:=length(t)
                                                                                       h – позиция начала слова;
                                                                                       i – номер элемента строки;
                                   нет                                                 L – длина текста.
                      d>50                Печать t          конец
                                                                                           Коды строчных русских букв не упорядочены: буквам от ′а′ до ′п′
                          да
                                                                                    соответствуют коды 160÷175; буквам от ′р′ до ′я′ - коды 224÷239; прописным
                   p:=pos(′_′,t)                                                    буквам от ′А′ до ′Я′-запоминаем коды 128÷159.
                                                Для «очистки» переменной a
                                                присваиваем пустую строку              var t:string; b:char; i,L,p,h:byte;
                                                                                       begin
                   a:=′_′, L:=0
                                                                                           readln(t);
             нет                                                                           t:= t+′_′;
Печать аa            L+p<=50                                                               L:= length(t);
                                                                                           p:=0;
                          да                                                               for i:=1 to L do begin        {проверка: является ли символ русской
               a:=a+copy(t, 1, p)                                                                                          буквой}
                    L:=L+p                           var a,t:string; L,d,p: byte;          if (ord(t[i])>=128) and (ord(t[i])<=175) or
                 delete(t, 1, p)                                                           (ord(t[i])>=224) and (ord(t[i])<=239)
                                                   begin writeln (′ввод текста′);
                 p:= pos(′_′, t)                                                           then begin
                    d:=d-L                          readln(t);
                                                    d:=length(t);                          if p=0 then begin
                                                     t:=t+′_′;                             p:=1;
                                                    while d>50 do begin                    b:= t[i];                           { запоминаем первую букву слова}
                                                                                           h:= i;         {запоминаем позицию начала слова}
                                                   a:=′_′; L:=0; p:=pos(′_′,t);
                                                                                       end;
    Рис.7. Блок-схема примера 14                 while L+p<=50 do begin
                                                                                           end
                                                   a:= a+ copy(t,1,p);
                                                                                       else begin
                                                        L:= L+p; d:=d-L;
                                                                                           if p<>0 then begin
                                                     delete(t,1,p);
                                                                                           if b= t[i-1] then
                                                 p:= pos(′ ′,t);
                                                                                           writeln(copy(t,h,i-h);                {печать слова}
                                                          end;
                                                                                       end;
                                                       writeln(a);
                                                                                           p:=0;
                                                          end;
                                                                                           end;
                                                    writeln(t);
                                                                                               end;
                                                       end.
                                                                                                     end.



                                     61                                                                                   62