Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 23.11.2011, 04:43   #1
Andi5
Новичок
 
Регистрация: 23.11.2011
Сообщений: 2
Репутация: 10
Вопрос Написать процедуру, заменяющую стандартную процедуру Insert

Доброго времени суток.Нужна помощь.
Существует стандартная процедура на языке паскаль Insetr(вставка подстроки в строку)
нужно написать процедуру которая заменит функцию Insert.

у меня вышло как,не уверен что вообще правильно но все равно не работает:
Код:

procedure INS(str,substr:string;num:int; var FinalStr:string);
var
i: integer;
begin
Write('Enter Num'); Readln(Num);
for i:=1 to Num do
FinalStr[i]:=str[i];
for i:=1 to length(substr) do
FinalStr[i+Num]:=substr[i];
for i:=1 to (Length(Str)-Num) do
FinalStr[i+Num+Length(substr):=Str[i+Num];
end;

помогите пожалуйста




___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.11.2011 в 08:30.
Andi5 вне форума   Ответить с цитированием
Старый 23.11.2011, 08:42   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,766
Репутация: 5213
По умолчанию

всё не так!
Вы вообще смотрели на параметры стандарной процедуры Insert ?!

первым параметром идёт константная переменная (переменная, которая не изменяется в теле процедуры) - это вставляемая подстрока.
второй параметр - переменная, куда собственно и происходится вставка.
третий параметр - индекс (позиция), куда производить вставку.

я бы написал что-то вроде такого:
Код:

procedure MyInsert(Source: String; var S: String; Index: Integer);
var sResult : string;
 i : integer;
begin
  sResult := '';
  if Index>Length(S) then Index := Length(S); 
  {копируется начальная часть исходной строки (до позиции вставки) }
  for i:=1 to Index-1 do sResult := sResult + S[i];

  {копируется вставляемая подстрока  }
  for i:=1 to Length(Source) do sResult := sResult + Source[i];

  {копируется остаток исходной строки (после позиции вставки) }
  for i:=Index to Length(S) do sResult := sResult + S[i];

  {замена исходной строки на результирующую}
  S := sResult;
end;


p.s. свой код я не проверял, писал прямо здесь, в браузере. могут быть опечатки и мелкие ошибки...
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 24.11.2011, 17:57   #3
Andi5
Новичок
 
Регистрация: 23.11.2011
Сообщений: 2
Репутация: 10
По умолчанию

Спасибо все работает
Andi5 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать процедуру авторизации на сайте art-programs Фриланс 0 25.03.2011 18:32
Написать основную процедуру to-ot Помощь студентам 0 23.12.2010 22:55
HELP! Необходим скрипт на VB, автоматизирующий стандартную процедуру импорта из текстового файла Kerguru Microsoft Office Access 1 17.12.2009 21:33
Помогите написать процедуру ehoolu Microsoft Office Access 4 20.11.2009 07:58


10:24.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru