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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2010, 22:53   #1
Sh@rky
Пользователь
 
Регистрация: 30.06.2010
Сообщений: 13
По умолчанию В тех словах, которые оканчиваются сочетанием букв “ing”, заменить это окончание на “ed”.

Дана строка символов. В тех словах, которые оканчиваются сочетанием букв “ing”, заменить это окончание на “ed”.

Есть код этой задачи в делфи, но мне ее как то нужно в паскаль перевести, помогите пожалуйста.

Код:
program Strochki;
{$APPTYPE CONSOLE}
uses
  SysUtils,StrUtils;
 
var
  str:string;
  i,j:integer;
  next:boolean;
begin
  WriteLn('Input string');
  ReadLn(str);
  next:=true;
  i:=1;
  while next do
    begin
      if (posex('ing',str,i)>0) and ((posex('ing',str,i)+2=Length(str)) or (str[posex('ing',str,i)+3] in ['.',',',' ',':',';','!','?'])) then
        begin
          j:=posex('ing',str,i);
          i:=j;
          delete(str,j,3);
          insert('ed',str,j);
        end
      else
        next:=false;
    end;
  WriteLn(str);
  ReadLN;
end.
Sh@rky вне форума Ответить с цитированием
Старый 30.06.2010, 23:28   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
Program A080;
Var
 S : string;                             {Входная строка}
 I : Byte;                               {Счетчик. Byte, потому, что String в TP = String[255]}
Begin
 Writeln('Введите строку');              {Да, прямо сейчас введите}
 ReadLn(S);                              {Надо же, послушался - ввел}
 S := S +' '; {Так надо}
 While Pos('ing ', S) <> 0 Do            {Обратите внимание на пробел после ''ing''}
  Begin
   Delete(S, Pos('ing ', S), 3);         {Выкинем бредовый окончания! Долой их!}
   Insert('ed', S, Pos('ing ', S));      {И вставим еще бредовей}
  End;
 Writeln(S);                             {Вот ваша строка, подавитесь!}
End.
По идее должно работать.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 30.06.2010 в 23:30.
Alex Cones вне форума Ответить с цитированием
Старый 01.07.2010, 11:53   #3
Sh@rky
Пользователь
 
Регистрация: 30.06.2010
Сообщений: 13
По умолчанию

эх.. работать то работает, только немного не так..
Изображения
Тип файла: jpg Безимени-1.jpg (42.2 Кб, 162 просмотров)
Sh@rky вне форума Ответить с цитированием
Старый 01.07.2010, 12:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
   Delete(S, Pos('ing ', S), 3);         {Выкинем бредовый окончания! Долой их!}
   Insert('ed', S, Pos('ing ', S));      {И вставим еще бредовей}
э нет... после удаления подстроки, куда же вставлять?!
как то так надо:
Код:
...
   j := Pos('ing ', S);
   Delete(S, j, 3);       {Выкинем бредовый окончания! Долой их!}
   Insert('ed', S, j);     {И вставим еще бредовей}
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.07.2010, 13:13   #5
Sh@rky
Пользователь
 
Регистрация: 30.06.2010
Сообщений: 13
По умолчанию

вооо!!! Спасибо большое!!!
Sh@rky вне форума Ответить с цитированием
Старый 02.07.2010, 17:29   #6
Sh@rky
Пользователь
 
Регистрация: 30.06.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Код:

 S := S +' '; {Так надо}
По идее должно работать.
для чего плюс с пробелом нужен после S?
Sh@rky вне форума Ответить с цитированием
Старый 02.07.2010, 18:16   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Инае будет искаться ing в середине слова.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.07.2010, 19:26   #8
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Не... искаться в середине (али ещё где) будет если пробел не поставить в
Код:
While Pos('ing ', S) <> 0 Do            {Обратите внимание на пробел после ''ing''}
А S := S +' '; {Так надо} нужно для страховки - вдруг последнее слово кончается на "ing", а пробела в конце предложения нет.
eoln вне форума Ответить с цитированием
Старый 20.12.2015, 18:23   #9
.kbz
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 19
По умолчанию Как правильно в яву переделать этот код?

Как правильно в яву переделать этот код?
.kbz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить в группе ячеек с текстом регистр букв Wespe Microsoft Office Excel 2 21.06.2010 09:01
Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–1, 16] Mirel Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2010 10:58
ВЫДЕЛЕНИЕ ЗАКЛАДОК КОТОРЫЕ НАЧИНАЮТСЯ НА ОДНИНАКОВОЕ СОЧЕТАНИЕ БУКВ Окоча Юра Microsoft Office Word 3 14.01.2010 06:24
Заменить повторяющиеся символы(которые повторяются два или три раза) в тексте пробелами. Майки Паскаль, Turbo Pascal, PascalABC.NET 3 12.01.2009 17:45
вставить в CheckBox на форме название только тех листов книги, которые помечены определенным символом? Bezdar Microsoft Office Excel 4 23.07.2008 15:30