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

UptoLike

59
{$R-} var L:longint; w:word; errc:byte; S:string[10];
begin
S:=125375;
w:=0; {начало очистки w}
val(S,L,errc); {вызов преобразования}
if errc= 0 then begin
if (L>=0) and (L<=65535) then {всё в порядке}
w:=L
else writeln(ошибка диапазона при преобразовании ,L);
end {then}
else writeln (ошибка в строке ,S, в символе ,S[errc]); end.
Типовые алгоритмы обработки строк
Пример 12:
В тексте слово SL1 заменить на слово SL2.
Обозначение: рпозиция вхождения слова SL1 в строку t.
var t:string; SL1, SL2:string[20];
p:byte; L1, L2:byte;
begin writeln(ввод текста); readln(t);
writeln(SL1); readln(SL1);
L1:=length(SL1);
writeln(SL2); readln(SL2);
L2:=length(SL2);
p:=pos(SL1,t);
while p<>0 do begin delete(t,p,L1);
{удаляем слово SL1 из текста}
insert(SL2,t,p); {вст. слово SL2 в текст}
p:=pos(SL1,t);
end;
writeln(t); end.
Рис.5. Блок-схема примера 12
Ввод t
Ввод SL1,
SL2
p:=pos(SL1,t)
начало
нет
да
Удаляем из текста
SL1 вставляем SL2
с поз. Р.
р:=pos(SL1,t)
Определяем
длины слов
P<>0
Печать t
конец
60
Пример 13:
Распечатать текст по предложениям. В тексте предложения
разделяются *.
var t:string; L, p:byte;
begin readln(t);
t:= t + *; L:= length(t);
p:= pos(*, t);
while p<>0 do
begin writeln(copy(t, 1, p-1);
Рис. 6 Блок-схема примера 13 delete(t, 1, p);
{ или t:=copy(t, p+1, l-p)};
p:=pos(*, t);
end; end.
Пример 14:
Печать текста по строкам, длина которых, не превышает 50 – ти
символов. Разрыв строки выполнять по пробелу.
Обозначение: t – весь текст; d – длина всего текста; L – длина строки а;
p – позиция пробел; a строка не более 50-ти символов.
Ввод t
P<>0
коне
ц
P:=pos(
*
,t)
t:= t + *
P:=pos(
*
, t)
Печать предложения
Удаляем это
предложение
начало
нет
да
Добавляем в конец строки *,
чтобы обработка предложений
была одинакова
        {$R-} var L:longint; w:word; errc:byte; S:string[10];                          Пример 13:
        begin
                                                                                      Распечатать   текст   по       предложениям.   В   тексте    предложения
         S:=′125375′;
         w:=0;                               {начало очистки w}                 разделяются *.
         val(S,L,errc);                      {вызов преобразования}
         if errc= 0 then begin                                                                         начало
          if (L>=0) and (L<=65535) then {всё в порядке}
                w:=L
          else writeln(′ошибка диапазона при преобразовании ′,L);                                      Ввод t                   Добавляем в конец строки ′*′,
        end      {then}                                                                                                         чтобы обработка предложений
        else writeln (′ошибка в строке ′,S,′ в символе ′,S[errc]); end.                                                         была одинакова
                                                                                                      t:= t + ′*′

              Типовые алгоритмы обработки строк                                                      P:=pos(′*′,t)
        Пример 12:
     В тексте слово SL1 заменить на слово SL2.                                                                         нет
                                                                                                        P<>0                    конец
Обозначение: р – позиция вхождения слова SL1 в строку t.
                                     var t:string; SL1, SL2:string[20];                                      да
            начало           p:byte; L1, L2:byte;                                               Печать предложения
                             begin writeln(′ввод текста′); readln(t);
            Ввод t
                             writeln(′SL1′); readln(SL1);                                           Удаляем это
                             L1:=length(SL1);                                                       предложение
          Ввод SL1,
             SL2             writeln(′SL2′); readln(SL2);                                                                      var t:string; L, p:byte;
                             L2:=length(SL2);                                                       P:=pos(′*′, t)
                                                                                                                               begin readln(t);
        p:=pos(SL1,t)        p:=pos(SL1,t);                                                                                    t:= t + ′*′; L:= length(t);
                              while p<>0 do begin delete(t,p,L1);                                                              p:= pos(′*′, t);
         Определяем
                                {удаляем слово SL1 из текста}                                                                  while p<>0 do
         длины слов
                               insert(SL2,t,p);      {вст. слово SL2 в текст}                                                begin writeln(copy(t, 1, p-1);
                         нет    p:=pos(SL1,t);
             P<>0                                                                      Рис. 6 Блок-схема примера 13            delete(t, 1, p);
                               end;                                                                                             { или t:=copy(t, p+1, l-p)};
                да               writeln(t); end.
                                                                                                                                p:=pos(′*′, t);
      Удаляем из текста                                                                                                            end; end.
      SL1 вставляем SL2
           с поз. Р.                 Печать t                                          Пример 14:
        р:=pos(SL1,t)
                                                                                      Печать текста по строкам, длина которых, не превышает 50 – ти
                                       конец                                    символов. Разрыв строки выполнять по пробелу.
                                                                                Обозначение: t – весь текст; d – длина всего текста;    L – длина строки а;
                        Рис.5. Блок-схема примера 12                                 p – позиция пробел;             a – строка не более 50-ти символов.
                                      59                                                                                60