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

Ввести строку длиной до 30 символов, заменить в ней двойные символы на одиночные.

23.07.2012, 15:42. Показов 1726. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
ввести строку длиной до 30 символов, заменить в ней двойных символов на одиночные, пробелов-на знак подчеркивания, сочетания '**' на многоточие'...'
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2012, 15:42
Ответы с готовыми решениями:

Заменить в строке двойные символы на одиночные
Ввести строчку длиной до 30 символов, заменить в ней двойные символы на одиночные, пробелы - на...

Дана строка. Заменить в ней все парные символы на одиночные
Дана строка. Заменить в ней все парные символы на одиночные. Помогите реализовать код... только...

Ввести строку символьных данных, заменить в ней символы на "5"
Ввести строку символьных данных, задавая буфер 12 байт. Заменить в этой строке символы на "5"...

Ввести строку длиной до 70 символов. Определить, сколько слов из четырех букв входящих в эту строку
Ввести строку длиной до 70 символов. Определить, сколько слов из четырех букв входящих в эту строку

5
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
23.07.2012, 15:44 2
Цитата Сообщение от mellissa Посмотреть сообщение
заменить в ней двойных символов на одиночные
а поподробней можно!?
0
291 / 239 / 102
Регистрация: 07.04.2011
Сообщений: 1,441
23.07.2012, 19:35 3
Цитата Сообщение от mellissa Посмотреть сообщение
ввести строку длиной до 30 символов, заменить в ней двойных символов на одиночные, пробелов-на знак подчеркивания, сочетания '**' на многоточие'...'
Ну если я все правильно понял,то так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:integer;
begin
s:=Edit1.Text;
 for i:=1 to length(s) do
  begin
  if (((s[i])='.') and ((s[i+1])='.')) then Continue;
  if (((s[i])='_') and ((s[i+1])='_')) then Continue;
  if (((s[i])=' ') and ((s[i+1])=' ')) then Continue;
  if (((s[i])='*') and ((s[i+1])='*')) then Continue;
  if ((s[i])=(s[i+1])) then Delete(s,i+1,1);
  s:=StringReplace(s,' ','_',[rfReplaceAll]);
  s:=StringReplace(s,'**','...',[rfReplaceAll]);
Edit2.Text:=s;
end;
 end;
1
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
24.07.2012, 06:16 4
Немного не так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
  i:integer;
begin
  s:=Edit1.Text;
  
  i:=2;
  While i<=Length(s) Do
  if (s[i]<>'*') And (s[i]<>' ') then
  if ((s[i])=(s[i-1])) then
  Delete(s,i,1) Else Inc(i) Else Inc(i);
 
  s:=StringReplace(s,' ','_',[rfReplaceAll]);
  s:=StringReplace(s,'**','...',[rfReplaceAll]);
  Edit2.Text:=s;
end;
2
291 / 239 / 102
Регистрация: 07.04.2011
Сообщений: 1,441
24.07.2012, 08:33 5
Ну у меня получалось так,что после замены символов через stringreplace,удалялись повторяющиеся.Сделал для них исключения и все!
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
24.07.2012, 18:58 6
OverDozero: Вот твои ошибки.
1. Ты в цикле постоянно записываешь в Edit2 промежуточное значение s. Это нужно делать после выполнения задачи.
2. StringReplace тоже находится внутри цикла. Хотя после первого их использования они уже будут бесполезны, но это тоже некорректность.
3. Использовать цикл For в этом случае нельзя, потому, что длина строки будет уменьшаться (Delete), а конечное значение переменной цикла рассчитывается только один раз. Раньше я не обратил на это внимание.
4. После удаления символа у тебя индекс наращивается на 1. Т.е. если следующий символ такой же как и предыдущий - программа его пропустит не удаляя.
5. Ну и, хоть это и не критично, если тебе в цикле не нужно было обрабатывать определённые символы - нет необходимости проверять наличие пары этих символов.
1
24.07.2012, 18:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2012, 18:58
Помогаю со студенческими работами здесь

Ввести с клавиатуры строку S1 длиной до семидесяти символов. В строку S2 перенести все слова которые имеют удвоение бук
Ввести с клавиатуры строку S1 длиной до семидесяти символов. В строку S2 перенести все слова...

ввести строку длиной 70 символов, а в другую строку перенести все слова из этой строки, которые имеют удвоение букв.
помогите сделать .!!!!! нужно ввести строку длиной 70 символов, а в другую строку перенести все...

Ввести строку символов, длиной до 20 байт. Ввести слово, размером до 10 байт. Содержит ли данная строка символ
Для начала организовал просто поиск одной буквы(код уже переделан от исходного),теперь пытаюсь...

Ввести строку, оставить в ней символы, которые не дублируются.
Помогитеее зачет нужен очень надо!


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru