Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 21.10.2012
Сообщений: 12

Удалить слова и символ пробела, встречающиеся подряд более, чем один раз. Не могу найти ошибку

14.03.2013, 11:22. Показов 1178. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот задание:
Повтор слов. В текстовое поле пользователь вводит строку, состоящую из слов, разделенных любым количеством пробелов и знаков препинания. Напишите программу, которая редактирует этот текст, удаляя слова и символ пробела, встречающийся подряд более, чем один раз. Отредактированный текст помещается в надпись.


Вот код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
unit Convert;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;
 
type
  TfrmConvert = class(TForm)
    mmoText: TMemo;
    mmoExit: TMemo;
    btnConverter: TButton;
    mm1: TMainMenu;
    mnuFile: TMenuItem;
    mnuConvert: TMenuItem;
    Edit1: TEdit;
    procedure btnConverterClick(Sender: TObject);
    function FirstDelim(var S:string;delim:string):string;
    function FirstWord(var S:string;delim:string):string;
    private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  frmConvert: TfrmConvert;
 
implementation
 
{$R *.dfm}
 
 
 
 
 
 
 
procedure TfrmConvert.btnConverterClick(Sender: TObject);
var i,j,p : integer;
find,S:string;
begin
  //mmoText.Lines.Clear;
  mmoExit.Text:=mmoText.Text;
  S:=TCaption(String(mmoExit.Text));
  j:=mmoExit.Lines.Count;
  //j:=3;
  While length(S)>0 do
  mmoExit.Text:=FirstDelim(S,' ');
  find:=FirstWord(S,' ');
  For i:=0 to j-1 do // Запускаем цикл поиска строки
     p:=Pos(find, mmoExit.Lines.Text);
     If p<>0 Then
     Begin
        Delete(S,p,length(find));
     End;
  mmotext.Lines.Add(s);
 
end;           
 
 
function TfrmConvert.FirstWord(var S:string;delim:string):string;
var i:integer;//счётчик
   W:string;//подстрока
   L:integer;//длина слова
   C:char;//символ
   P:integer;
begin
   for i:=1 to length(S) do
   begin
      c:=S[i];//текущий символ
      P:=Pos(C,delim);
      if P>0 then begin L:=i-1; break; end;
   end;
   W:=Copy(S,1,L);
   Delete(S,1,L);
   Result:=W;
end;
 
function TfrmConvert.FirstDelim(var S:string;delim:string):string;
var i:integer;//счётчик
   D:string;//подстрока
   L:integer;//длина слова
   C:char;
   P:integer;
begin
   for i:=1 to length(S) do
   begin
      c:=S[i];//текущий символ
      P:=Pos(C,delim);
      if P=0 then begin L:=i-1; break; end;
   end;
   D:=Copy(S,1,L);
   Delete(S,1,L);
   Result:=D;
end;
 
 
 
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.03.2013, 11:22
Ответы с готовыми решениями:

Найти в строке все слова, в которых буква ‘a’ встречается более двух раз (разделитель между словами – символ пробела)
Помогите с заданием по ассемблеру: Найти в строке все слова, в которых буква ‘a’ встречается более двух раз, и вывести на экран...

Удалить слова, встречающиеся более 2 раз
Дан текстовый файл литерных величин. Преобразовать исходный текстовый файл, удалив все слова, встречающиеся более 2 раз

Найти все слова, в которых буква ”а” встречается более чем один раз
Помогите пожалуйста решить поставленную задачу. Дана строка, состоящая из слов, разделенных любым количеством пробелов. Напишите...

2
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
14.03.2013, 11:43
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  with TStringList.Create do
  try
    Delimiter := ' ';
    DelimitedText := Edit1.Text;
    for i := Count - 1 downto 1 do
      if Strings[i] = Strings[i-1] then
        Delete(i);
    Edit1.Text := DelimitedText;
  finally
    Free;
  end;
end;
0
0 / 0 / 1
Регистрация: 21.10.2012
Сообщений: 12
14.03.2013, 11:52  [ТС]
Цитата Сообщение от gorfil Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  with TStringList.Create do
  try
    Delimiter := ' ';
    DelimitedText := Edit1.Text;
    for i := Count - 1 downto 1 do
      if Strings[i] = Strings[i-1] then
        Delete(i);
    Edit1.Text := DelimitedText;
  finally
    Free;
  end;
end;

спасибо, а можно этот код как то проще записать, просто мы еще не учили try, finally, free, Delimiter.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2013, 11:52
Помогаю со студенческими работами здесь

Найти все слова, в которых буква "а" встречается более чем один раз
Помогите решить задачу. Очень прошу. Заранее спасибо.)

Найти все глухие согласные, встречающиеся в тексте, входящие НЕ БОЛЕЕ чем в два слова
Дана строка(string): Мада,защалаф,тамутарт. (Пунктуацию соблюсти) Найти: Все глухие согласные, встречающиеся в тексте, входящие НЕ БОЛЕЕ...

Символы, встречающиеся в тексте подряд более чем два раза, закодировать
Нуждаюсь в вашей помощи, желательно сделать через процедуры и функции, заранее спасибо : 1)Преобразовать текст файла. Символы,...

Закодировать символы, встречающиеся в тексте подряд более чем два раза
Написать код для программы с процедурами Дана строка. Символы, встречающиеся в тексте подряд более чем два раза, закодировать следующим...

Найти слова, в которых символ в центре слова и в оставшейся части встречается только один раз
Задание: Слово имеет нечетное количество символов, и символ, находящийся в центре слова, в оставшейся части этого слова встречается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru