Форум: "Основная";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Внизномер позиции Найти похожие ветки
← →
Fors (2003-01-13 18:57) [0]Я хочу написать аналог процедуры Insert. Процедурой Delete и функцией Copy пользоваться нельзя. В первой строке входа дана подстрока, которая вставляется, во второй строке входа строка, куда вставляется и в третьей строке входа позиция, начиная с которой подстрока будет входить в строку.Когда я ввожу номер позиции 4 в этом слове hel чтобы получить слово hello
lo - то что хочу вставить
hel - куда вставляю
hel l- то что получаеться
Надо добавить проверку if (Position < Length(Str))Как это сделать какой обработчик ошибки я затрудняюсь.
var
i: Integer;
begin
SetLength(Result, Length(Srt) + Length(SubStr));
for i := 1 to Position do
Result[i] := Str[i];
for i := 1 to Length(SubStr) do
Result[i + Position] := SubStr[i];
for i := Position to Length(Str) do
Result[i + Length(SubStr)] := Str[i];
end;
← →
Palladin (2003-01-13 19:22) [1]
function _Insert(Str,SubStr:string;pos:word):string;
var
i:integer;
s1:string;
begin
if Pos>Length(Str) then
begin
result:=Str;
for i:=length(str) to pos-1 do result:=result+" ";
result:=result+SubStr;
end else
begin
s1:=Str;
SetLength(s1,pos-1);
result:=s1+SubStr;
for i:=pos to length(Str) do result:=result+str[i];
end;
end;
попробуй. не тестировал.
← →
Fors (2003-01-13 19:41) [2]Ввожу, все нормально, но при нажатие на Enter вывод не показывает,
WriteLn и ReadLn поставил
var pos:word;
i:integer;
Str,result,SubStr,s1:string;
begin
ReadLn(SubStr);
ReadLn(Str);
ReadLn(pos);
begin
if Pos>Length(Str) then
begin
result:=Str;
for i:=length(str) to pos-1 do result:=result+" ";
result:=result+SubStr;
end else
begin
s1:=Str;
SetLength(s1,pos-1);
result:=s1+SubStr;
for i:=pos to length(Str) do result:=result+str[i];
WriteLn(result);
ReadLn
end;
end;
end.
← →
Palladin (2003-01-13 19:47) [3]ужасть просто :)
это не правильно
...
result:=s1+SubStr;
for i:=pos to length(Str) do result:=result+str[i];
WriteLn(result);
ReadLn
end;
end;
end.
вот так правильно
...
result:=s1+SubStr;
for i:=pos to length(Str) do result:=result+str[i];
end;
WriteLn(result);
ReadLn;
end;
end.
← →
Palladin (2003-01-13 19:49) [4]какой я сегодня добрый :)
от безделья наверно...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c