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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2007, 22:45   #1
Алена
 
Регистрация: 31.10.2007
Сообщений: 6
По умолчанию В введенном предложении удалить все повторяющиеся слова

В введенном предложении удалить все повторяющиеся слова
Алена вне форума Ответить с цитированием
Старый 19.11.2007, 23:09   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

На чем делать?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 19.11.2007, 23:12   #3
Abbatik
Форумчанин
 
Аватар для Abbatik
 
Регистрация: 11.11.2007
Сообщений: 136
По умолчанию

Код:
uses crt;
var s:string;
ss:array[1..100] of string;
k,j,n,i:integer;
begin
clrscr;
write('vvedite predlogenie...');
readln(s);
for i:=1 to length(s) do begin
if s[i]=' ' then k:=k+1 else ss[k]:=ss[k]+s[i];
end;
for i:=1 to k do begin
for j:=1 to k do begin
if (ss[i]=ss[j]) and (i<>j) then ss[j]:='';
end;
end;
for i:=1 to k do begin
write(ss[i],' ');
end;
readkey;
end.
слова разделять пробелами
ICQ - 446037211
Abbatik вне форума Ответить с цитированием
Старый 21.11.2007, 10:51   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Функция DeleteWords удаляет из предложения повторяющиеся идущие подряд слова.
Параметры:
s: string; //исходная строка
signs: boolean; //необязательный параметр, если True будут учитываться синтаксические знаки ("мама," = "мама")
caps: boolean; //необязательный параметр, если True будет учитываться регистр букв ("Мама" = "мама")

Использование:
Edit2.Text:=DeleteWords(Edit1.Text) ;
Edit2.Text:=DeleteWords(Edit1.Text, True); //учитывать знаки
Edit2.Text:=DeleteWords(Edit1.Text, False,True); //учитывать регистр
Edit2.Text:=DeleteWords(Edit1.Text, True,True); //учитывать знаки и регистр

Код:
function DeleteWords(s: string; signs: boolean = false;
  caps: boolean = false): string;
var
i,w,last: integer;
words: array of string;
begin
last:=-1;
w:=0;
SetLength(words,w+1);

for i:=1 to Length(s) do
  begin
  if s[i]<>' ' then
    begin
    if signs then
      begin
      if not (s[i] in [',', '.', '!', '?']) then
        begin
        words[w]:=words[w]+s[i];
        last:=i;
        end else last:=i;
      end
    else
      begin
      words[w]:=words[w]+s[i];
      last:=i;
      end;
    end
  else
    if last = i-1 then
      begin
      inc(w);
      SetLength(words,w+1);
      end;
  end;

for i:=0 to w-1 do
  if caps then
    begin
    if AnsiLowerCase(words[i]) = AnsiLowerCase(words[i+1]) then words[i]:='';
    end
  else
    if words[i]=words[i+1] then words[i]:='';

for i:=0 to w do
  begin
  Result:=Result + words[i];
  if (i <> w)and(words[i]<>'') then Result:=Result+' ';
  end;
end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 21.11.2007 в 14:23.
mutabor вне форума Ответить с цитированием
Старый 21.11.2007, 11:02   #5
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Дано - Edit1, Edit1

результат - Edit1Edit1

Код:
if (s[i]<>',')and(s[i]<>'.')and(s[i]<>'!')and(s[i]<>'?') then

лучше:
if not (s[i] in [',','.','!','?']) then
Alex21 вне форума Ответить с цитированием
Старый 21.11.2007, 14:12   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Спасибо за теситирование, принимается
Код поправил.
Изображения
Тип файла: png proverka.PNG (4.4 Кб, 175 просмотров)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 21.11.2007 в 14:51.
mutabor вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь с алгоритмом расстановки ударения в предложении. Gauss Общие вопросы Delphi 10 14.04.2008 15:31
прога исправляющая маленькую букву в новом предложении. Миха_М Общие вопросы Delphi 8 11.03.2008 10:23
Удалить из массива(одномерного) все повторяющиеся числа(Delphi) Махор Помощь студентам 4 29.11.2007 23:25
Удалить из Memo повторяющиеся строки Etar Компоненты Delphi 2 28.06.2007 18:34
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 21:36