![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() нужно добавить функцию или процедуру Delete(s,n,m) в которой выполняется условие
удаление из строки s подстроки, начиная с позиции n длиной m в такой код Код:
program Project2; {$APPTYPE CONSOLE} uses SysUtils; {функция Word возвращает первое слово выделеное из строки а (это слово может быть пустым, если в строке нет ничего кроме пробелов)} Function Word(a:shortstring):shortstring; label L1,L2; var lens,lend:integer; {длина источника и результата} sb,db:byte;{индексы в источнике и результате} begin {установка длины} lens:=Ord(a[0]); lend:=0; {пропуск главных пробелов} for sb:=1 to lens do if a[sb]<>' ' then goto L1; {если в цикле не произошел переход на L1, то строка не содержит символов, которые отличаються от пробелов} goto L2; L1: {перебор символов найденного слова в источнике} db:=1; for sb:=sb to lens do begin {заканчивается при нахождении пропуска} if a[sb]=' ' then goto L2; {копирование символов источника в результат} Word[db]:=a[sb]; db:=db+1; {наращивание длины результата} lend:=lend+1; end; L2: {запись в поле длины результата} Word[0]:=Chr(lend); end; {====обработка контрольного примера====} var CheckFile:text; {файл исходных данных} h:shortstring; {заголовок примера} s:shortstring; {строка-источник} t:shortstring; {строка-результат} begin writeln('===== Проверка 1 ====='); {открытие файла исходных данных} assign(CheckFile,'lab2.dat'); reset(CheckFile); while not Eof(checkfile) do begin {ввод-вывод заголовка} readln(CheckFile,h);writeln(h); {ввод-вывод источника} readln(CheckFile,s);writeln('s=>',s,'<='); {преобразования} t:=word(s); {вывод результата} writeln('t=>',t,'<='); writeln('s=>',s,'<='); end; close(CheckFile); writeln('===== Проверка 2 ====='); {совпадение источника и результата} assign(CheckFile,'lab2.dat'); reset(CheckFile); readln(CheckFile,h);writeln(h); readln(CheckFile,s);writeln('s=>',s,'<='); s:=word(s); writeln('s=>',s,'<='); readln; close(CheckFile); end. |
#2
|
|||
|
|||
![]() вообще, такая процедура есть встроенная.
а если хочется написать самому, то можно так: Код:
function DeleteSubStr(S : String; Start, Count : Integer) : String; var I : Integer; begin Result := ''; For I := 1 To Length(S) Do If (I < Start) Or (I > Start + Count) Then Result := Result + S[i]; end; Не оптимально, но работать будет. |