Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Какой браузер Вы предпочитаете?

Internet Explorer
Mozilla Firefox
Opera
Netscape
Chrome
Другой


Результаты
Другие опросы

Всего голосов: 1673
Комментарии: 10


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Книги-online



Практикум — Глава 7. Алгоритмы обработки символьной информации
[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 7.3. B заданном тексте одно заданное слово везде заменить на другое заданное слово
такой же длины.

Тест

Данные Результат
Текст Слово1 Слово2
''2sinx+siny'' ''sin'' ''cos'' ''2cosx+cosy''

Демонстрация

Школьный АЯ

алг Замена (арг рез лит Текст, арг лит Слово1, Слово2)
  дано | длины Слово1 и Слово2 совпадают
  надо | в строке Текст подстрока Слово1 везде
       | заменена на подстроку Слово2
нач цел i, DS
  DS:=длин(Слово1)
  нц для i от 1 до длин(Текст)-DS+1
    если Текст[i : i+DS-1] = Слово1 | если вырезка равна Слово1, 
      то Текст[i : i+DS-1] :=Слово2 | то вырезке присваиваем Слово2
         i:=i+DS                    | и продвигаемся на длину слова

    все
  кц
кон

Исполнение алгоритма Обозначение проверяемого условия: Текст[i : i+DS-1] = Слово1 => (1)

Для тестовых данных имеем: DS=3, длин (Текст)-DS+1= 8.
i Текст[i : i+2] (1) Текст
1  2  5  6  7  10 "2si"  "sin"  "x+s"  "+si"  "sin" -  +  -  -  + "2sinx+siny"  "2cosx +siny"     "2cosx+cosy"   
 
Turbo Pascal
(эта программа, использующая стандартную функцию  Pos , не требует,  чтобы длины  заменяемого и вставляемого слов были одинаковыми)
Program Replace;
  Uses Crt;
  Var Text, Slovo1, Slovo2 : String;
      i, DlinaSlova, P     : Integer;
BEGIN ClrScr;
  Write('Введите строку : '); ReadLn(Text);
  Write('Какое слово заменить ? '); ReadLn(Slovo1);
  Write('На какое слово заменить ? '); ReadLn(Slovo2);
  WriteLn; WriteLn('О т в е т : ');
  WriteLn('Исходный текст: ', Text); DlinaSlova:=Length(Slovo1);
  DlinaSlova:=Length(Slovo1);
  P:=Pos(Slovo1,Text); {номер позиции, с которой в строке Text     }
                       {в первый раз встречается подстрока Slovo1  }
  While P>0 do         {цикл продолжается до тех пор,пока подстрока}
                       {Slovo1 встречается в строке Text           }
   begin                
     Delete(Text, P, DlinaSlova); {удаление подстроки Slovo1, начинаю-}
                                  {щейся с позиции P, из строки Text  }  
     Insert(Slovo2, Text, P);  {вставка подстроки Slovo2  }
                               { в строку Text с позиции Р}
     P:=Pos(Slovo1, Text); {номер позиции, с которой подстрока Slovo1} 
                           {встречается в строке Text в очередной раз}
   end;
  WriteLn('Новый текст: ', Text); 
  ReadLn
END.
 
QBasic
CLS : INPUT "Введите текст : " , Text$
INPUT "Какое слово заменить ? " , Slovo1$
INPUT "На какое слово заменить ? " , Slovo2$
PRINT : PRINT "О т в е т"
PRINT "Исходный текст : " ; Text$
DlinaText = LEN(Text$) : DlinaSlova = LEN(Slovo1$)
FOR i = 1 TO DlinaText-DlinaSlova+1
  IF MID$(Text$, i, DlinaSlova) = Slovo1$ THEN
       MID$(Text$, i) = Slovo2$ : i=i+DlinaSlova
  END IF
NEXT i
PRINT "Новый текст : " ; Text$
END
 
[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]


Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском


.



книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать