
26.03.2011, 22:56
|
Прохожий
|
|
Регистрация: 11.01.2011
Сообщения: 2
Репутация: 10
|
|
Не могу добавить функцию
нужно добавить функцию или процедуру 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.
|