Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 30.03.2017
Сообщений: 8
1

Функция: заменить все подряд идущие одинаковые символы одним

25.05.2017, 22:53. Показов 3899. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составить функцию преобразования строки, которая

заменяет все подряд идущие одинаковые символы одним

вхождением этого символа(задаем символ сами). Записать новую строку.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2017, 22:53
Ответы с готовыми решениями:

Удалить из строки все подряд идущие одинаковые символы
Удалить из строки все подряд идущие одинаковые символы(КУмир/Паскаль)

В строке удвоить все идущие подряд одинаковые символы
Как решить Дана строка S. Каждую подстроку длиной n>1, состоящую из одинаковых символов, заменить...

Найти все слова, в которых есть две подряд идущие одинаковые буквы
Дан массив из слов Z(m). Найти все слова, в которых есть две подряд идущие одинаковые буквы.

Дан массив из слов Z(m). Найти все слова, в которых есть две подряд идущие одинаковые буквы
Уважаемые программисты :) Я уверена,что вы мне поможете)Пожалуйста! Задание: Дан массив из слов...

2
Эксперт Pascal/Delphi
6811 / 4568 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
26.05.2017, 10:09 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var
  s: string;
  ch: char;
 
function DeleteChar(s: string; ch: char): string;
var
  i: integer;
  s1: string;
begin
  s := s + ' ';
  for i := 1 to length(s) - 1 do
    if (s[i] = ch) and (s[i + 1] = ch) then
      s1 := s1 + '' 
    else
      s1 := s1 + s[i];
  DeleteChar := s1;
end;
 
begin
  readln(s);
  readln(ch);
  writeln(DeleteChar(s, ch));
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7795 / 4618 / 2830
Регистрация: 22.11.2013
Сообщений: 13,113
Записей в блоге: 1
29.05.2017, 15:37 3
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

ZX Spectrum-128,
стр.13 не имеет смысла.
Да и в целом проще:
Pascal
1
2
3
4
5
6
7
function DeleteChar(s: string; ch: char): string;
var i: integer;
begin
  for i :=Length(s) - 1 downto 1 do
    if (s[i] = ch) and (s[i + 1] = ch) then Delete(s,i,1);
  DeleteChar := s;
end;
Да и само условие неоднозначно:
Цитата Сообщение от Kitozoy Посмотреть сообщение
все подряд идущие одинаковые символы одним
вхождением этого(1) символа(задаем символ сами(2))
(1) и (2) как бы взаимно исключающие. На случай (1):
Pascal
1
2
3
4
5
6
7
function DeleteChar(s: string): string;
var i: integer;
begin
  for i :=Length(s) - 1 downto 1 do
    if s[i] = s[i + 1] then Delete(s,i,1);
  DeleteChar := s;
end;
Добавлено через 17 минут
Если нужно заменить все вхождения повторяющихся символов заданным символом:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
function DeleteChar(s: String; ch: Char): String;
var i, j: Integer;
begin
  i:=Length(s);
  while i>0 do begin
    j:=i;
    while (i>0) and (s[i]=s[j]) do Dec(i);
    if j-i>1 then begin
      s[i+1]:=ch; Delete(s,i+2,j-i-1);
    end;
  end;
  DeleteChar := s;
end;
0
29.05.2017, 15:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2017, 15:37
Помогаю со студенческими работами здесь

Удалить подряд идущие одинаковые символы
var i: integer; s: string; procedure DS(s:string; i:integer); begin i:=1; repeat

Удалить из заданной символьной строки подряд идущие одинаковые символы
Задание: Написать программу, которая удаляет из заданной символьной строки подряд идущие одинаковые...

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

Сформируйте число, в котором все подряд идущие одинаковые цифры исходного числа заменены одной соответствующей цифрой
Дано восемнадцатизначное число. Сформируйте новое число, в котором все подряд идущие одинаковые...


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

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