Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2011, 00:02   #1
art_d
Пользователь
 
Регистрация: 30.09.2010
Сообщений: 22
По умолчанию Вставить в строку подстроку после определенного слова Паскаль

Например, в строке после каждого слова DOG вставить слово CAT
Добился, чтобы добавлял после первого слова, но никак не могу сделать, чтобы вставлял после всех (т.е. в цикле)
art_d вне форума Ответить с цитированием
Старый 06.03.2011, 09:39   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

код показывай, разберемся ))
phomm вне форума Ответить с цитированием
Старый 06.03.2011, 10:12   #3
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

после каждого слово вставляется строка С , а там сам дальше думай
Код:
uses crt;
var
    b:array[1..100]of string;
    a,c:string;
    l,i:integer;
begin
readln(c);
read(a);
i := 1; l := 0;
while (i <= length(a)) do
begin
     while ((i <= length(a)) and (a[i] = ' ')) do
           inc (i);
     inc(l);
     b[l]:='';
     while ((i <= length(a)) and (a[i] <> ' ')) DO
     begin
          b[l]:=b[l]+a[i];
          inc (i);
     end;
end;
if (b[length(a)] = ' ')then dec(l);
for i:=1 to l do
write(b[i]+c,' ');
end.

Последний раз редактировалось Летучий_СкилетиК; 07.03.2011 в 07:55.
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 07.03.2011, 00:52   #4
art_d
Пользователь
 
Регистрация: 30.09.2010
Сообщений: 22
По умолчанию

Код:
uses
crt;
var input_str, outputsrt,word_input,word2: string;
a,len_inp_w:integer;
begin

clrscr;
word_input:=('111');
word2:=('kkk');
input_str:=('bbbb kkkk bbbb kkkkbbbkkk');
word_input:=' '+word_input+' ';
a:=Pos(word2,input_str);
len_inp_w:=Length(word2);
Insert(word_input,input_str,a);
 writeln(input_str);
end.
Что то типо того, но как сделать, чтобы программа искала бы ВСЕ слова (word2) в строке (input_str) и заменяло бы на (word_input)

есть идеи?

Последний раз редактировалось Stilet; 08.03.2011 в 12:24.
art_d вне форума Ответить с цитированием
Старый 07.03.2011, 14:29   #5
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
Счастье

Цитата:
Сообщение от art_d Посмотреть сообщение
есть идеи?
я вам выше привел код! чем ни вариант? неужели трудно пару строк кода изменить?!
Код:
uses crt;
var
    b:array[1..100]of string;
    a,word_, word_input:string;
    l,i:integer;
begin
writeln('Input text');
readln(a);

writeln('Input word');
readln(word_);

writeln('Input word_input');
readln(word_input);

i := 1; l := 0;
while (i <= length(a)) do
begin
     while ((i <= length(a)) and (a[i] = ' ')) do
           inc (i);
     inc(l);
     b[l]:='';
     while ((i <= length(a)) and (a[i] <> ' ')) DO
     begin
          b[l]:=b[l]+a[i];
          inc (i);
     end;
end;
if (b[length(a)] = ' ')then dec(l);
for i:=1 to l do
if b[i] = word_ then b[i]:=word_input;

for i:=1 to l do
   write(b[i],' ');
end.
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 07.03.2011, 22:18   #6
art_d
Пользователь
 
Регистрация: 30.09.2010
Сообщений: 22
По умолчанию

Большое спасибо, сделал, но в АВЦ паскаль запускается, а в турбо паскале никак
Задача немного поменялась, в строке ищем слово и после этого слова вписываем еще одно слово (через модуль)

Код:
program Lab2;
uses LAB3U;

var
 InputString, srt_out: StrData;
 WordOut, WordIn: StrData;
 OutputString: StrData;

begin
  writeln('ВВедите строку');
  readln(InputString);
  writeln('ВВедите слово, после которого надо вставить другое слово');
  readln(WordOut);
  writeln('Введите слово, которое надо вставить');
  readln(WordIn);
   Inp( InputString, WordOut, WordIn);
  if ind<>11 then
  begin
  Writeln( ' результат');
  Writeln(o);
  end
  else
   writeln('слово не найдено');
readln;
 end.
Код:
unit LAB3U;
Interface
type StrData = string;
     StrData1 = string;
 var inputstring,WordOut,WordIn,outputt,srt_out,a,o: string;
 i,len,ind:integer;
procedure Inp (Inputstring : StrData; WordOut:strData;  var WordIn: StrData1 );
implementation
procedure Inp (Inputstring : StrData; WordOut:strData;  var WordIn: StrData1 );
 var
    b:array[1..100]of string;
     l,i:integer;
 begin
 if pos(WordOut+' ', Inputstring)>0 then
 begin
  i := 1; l := 0;
  while (i <= length(Inputstring)) do
    begin
     while ((i <= length(Inputstring)) and (Inputstring[i] = ' ')) do
     inc (i);
     inc(l);
     b[l]:='';
     while ((i <= length(Inputstring)) and (Inputstring[i] <> ' ')) DO
       begin
            b[l]:=b[l]+Inputstring[i];
            inc (i);
       end;
    end;
 if (b[length(Inputstring)] = ' ')then dec(l);
 for i:=1 to l do
 if b[i] = WordOut then b[i]:=(WordOut) + ' ' + (WordIn);
 for i:=1 to l do
  begin
   a:=(b[i] + ' ');
   o:=o+a;
    end;
end
  else
  ind:=11;
end;
   end.
art_d вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как регеспом в перле вставить подстроку Sergey2 PHP 11 15.10.2010 19:29
Вставить в строку S подстроку A Vylkan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 01.02.2010 04:49
Перевод на новую строку после нужного слова Лёшка228 Общие вопросы Delphi 2 09.06.2009 20:32
Вставить первую строку после строки, в которой находится первый встреченный максимальный элемент. JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 4 03.12.2008 12:13