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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 12:27   #1
kniazkinP
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 11
По умолчанию Удалить из слова вхождения первой буквы

Прошу помощи в решении следующей задачи: В тексте, от 2х до 30 слов (в них от 2х до 10 букв), после последнего слова точка. Нужно напечатать все лова отличные от последнего, предварительно преобразовав их, удаляя из слова все последующие вхождения первой буквы. прошу помощи на pascal-e. Я вот нашёл, когда первая буква текста становится последней, а вот как проверить что эта буква уже была и удалить последующие?
Код:
uses
  SysUtils;
 
var s,s1,s2:string;
i,k:integer;
function ResBuk(a:string):string;{функция перестановки букв}
begin
insert(a[1],a,length(a)+1);{вставляем первую букву в конец}
delete(a,1,1); {удаляем первую букву}
ResBuk:=a;
end;
begin
write('s: ');readln(s);
insert(' ',s,pos('.',s)); {вставляем пробел перед точкой для удобства}
while pos('  ',s)>0 do delete(s,pos('  ',s),1);{удаляем лишние пробелы}
for i:=pos('.',s)-2 downto 1 do {ищем предпоследний перед точкой пробел}
if s[i]=' ' then
    begin
      k:=i; {запоминаем его позицию}
      break;
    end;
s1:=copy(s,k+1,pos('.',s)-k-2); {запоминаем последнее слово}
while (pos(' ',s)>0)and(s[i]<>'.') do {пока есть пробелы и не точка}
      begin
         s2:=copy(s,1,pos(' ',s)-1); {читаем очередное слово}
         if s2<>s1 then writeln(ResBuk(s2)); {если не равно последнаму, выводим в измененном виде}
         delete(s,1,pos(' ',s)); {удаляем прочитанное слово с пробелом}
     end;
readln
end.
Ещё вот что нашёл, даже очень похоже, но не знаю как связать..
Код:
var
  str: string;
  AlreadyMeeted: set of char;
  tmpChr: char;
begin
  Result := '';
  AlreadyMeeted := [];
  for tmpChr in str do
    if tmpChr = '' then
      begin
        Result := Result + tmpChr;
        AlreadyMeeted := [];
      end
    else
      if not (tmpChr in AlreadyMeeted) then
        begin
          Result := Result + tmpChr;
          AlreadyMeeted := AlreadyMeeted + [tmpChr];
        end;
end;
kniazkinP вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Удаление из слов предыдущие вхождения в него последней буквы. Svetik2252 Помощь студентам 6 11.12.2009 20:30
СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова nick23 Помощь студентам 7 01.11.2009 14:47
в тексте удалить слова начинающиеся с заданой буквы Ananim-Pbl6ak Паскаль, Turbo Pascal, PascalABC.NET 9 26.05.2009 16:39
Удалить из второй строки те слова, которые есть в первой строке innaa639 Паскаль, Turbo Pascal, PascalABC.NET 2 26.11.2008 15:43
Изменение первой буквы Костя Общие вопросы Delphi 4 28.11.2007 14:31