С Новым годом! Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/92: Рейтинг темы: голосов - 92, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 82

Определить количество одинаковых подряд стоящих символов строки, и удалить повторяющиеся

26.10.2014, 22:31. Показов 16878. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, не могу разобраться как написать программу, возможно кто разбирается подскажет...

Вводится строка произвольной длины. Определить количество одинаковых подряд стоящих символов.+удалить повторяющиеся. Вывести исходную строку и результат обработки строки.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2014, 22:31
Ответы с готовыми решениями:

Строки символов. Определить количество одинаковых символов
3.Дана последовательность символов, в начале которой имеется некото*рое количество одинаковых символов. Определить это количество....

Найти в записи числа наибольшее количество подряд стоящих одинаковых цифр
Дано число n. Найти в записи числа наибольшее количество подряд стоящих одинаковых цифр. Желательно с объяснением, в программирование...

В строке символов определить максимальное число пробелов, стоящих подряд
В строке символов определить максимальное число пробелов, стоящих подряд. Удалить все пробелы, оставив между словами только по одному...

14
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
27.10.2014, 10:54
так устроит?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  i,j:integer;
  s,s1,s2:string;
begin
  repeat
    write('Строка>'); readln(s);s:=s+' ';
  until length(s)>1;  
  j:=0;s2:='';s1:=s[1];
  for i:=2 to length(s) do
      if s[i-1]=s[i] then inc(j) else begin s1:=s1+s[i];s2:=s2+s[i-1]+chr(j);j:=0;end;
  writeln('Исходная строка:',s);
  writeln('Строка без повторов:',s1);
  writeln('Повторяющиеся символы и количество повторов:');
  i:=1;
  while i<length(s2) do begin
     if  ord(s2[i+1])>0 then writeln(s2[i],':',ord(s2[i+1])+1);
    inc(i,2);
  end;
end.
1
33 / 33 / 43
Регистрация: 07.02.2014
Сообщений: 89
27.10.2014, 14:32
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Program test;
uses crt;
VAR
s : string;
i,k : integer;
BEGIN
clrscr;
WriteLn('Введите строку : ');
ReadLn(s);
WriteLn('Исходная строка : ',s);
FOR i:=Length(s)-1 downto 1 do
  if s[i] = s[Succ(i)] then
    begin
      inc(k);
      delete(s,i,1)
    end;
WriteLn('Количество одинаковых символов : ',k);
WriteLn('Результат обработки строки : ',s);
Readkey
END.
1
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 82
28.10.2014, 13:35  [ТС]
спасибо

Добавлено через 1 минуту
а можно мне пояснить по строкам что и как, а то немного не понятно
0
33 / 33 / 43
Регистрация: 07.02.2014
Сообщений: 89
28.10.2014, 15:20
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Program test;
uses crt; { Нужно для использования процедуры clrscr очистки экрана и функции ReadKey ожидания нажатия клавиши }
VAR
s : string; { Вводим строковую переменную }
i,k : integer; { Вводим числовые переменные для прохода по строке и подсчёта количества одинаковых символов }
BEGIN
clrscr; { очищаем экран функцией clrscr из модуля crt }
WriteLn('Введите строку : '); { Выводим сообщение на экран }
ReadLn(s); { запоминаем введенную строку в переменной s }
WriteLn('Исходная строка : ',s); { Выводим на экран содержимое переменной s }
FOR i:=Length(s)-1 downto 1 do { Проходим от предпоследнего символа строки s до первого символа строки }
  if s[i] = s[Succ(i)] then { Сравниваем каждый символ со следующим за ним символом }
    begin
      inc(k); { Увеличиваем счётчик одинаковых символов на единицу }
      delete(s,i,1) { Удаляем текущий проверяемый символ }
    end;
WriteLn('Количество одинаковых символов : ',k); { Выводим на экран количество одинаковых символов }
WriteLn('Результат обработки строки : ',s); { Показываем на экране строку в которой одинаковые символы удалены }
Readkey { Препятствуем завершению программы и смотрим на результат работы программы }
END.
1
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 82
29.10.2014, 12:57  [ТС]
спасибо)

Добавлено через 20 часов 6 минут
А если так сделать правильно?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Var s:string; 
i,k,n:integer; 
Begin
Writeln('Введите строку:');
Readln(s); 
i:=1; 
k:=0; 
n:=1; 
While i<=length(s)-1 do 
begin 
 if s[i]=s[i+1] then 
  begin
   Delete(s,i+1,1); 
   k:=k+1+n; 
   i:=i-1; 
   n:=0; 
  end else n:=1;
 i:=i+1
end; 
Writeln('Таких символов - ',k); 
Writeln('Новая строка - ',s); 
End.
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
29.10.2014, 13:52
прошу удалить пост
0
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 82
29.10.2014, 14:35  [ТС]
???
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
30.10.2014, 12:57
если считать просто количество одинаковых символов, не обращая внимание на их значение то да.
0
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 82
30.10.2014, 13:06  [ТС]
Не обращая внимания на их значение что тут подразумевается?
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
30.10.2014, 13:52
строка ффф уууу ккк
то что вы считаете просто повторяющиеся символы:
Code
1
2
3
ффф уууу ккк
Таких символов - 10
Новая строка - ф у к
я считал сколько раз каждый символ повторился:
Code
1
2
3
4
5
6
Исходная строка:ффф уууу ккк 
Строка без повторов:ф у к 
Повторяющиеся символы и количество повторов:
ф:3
у:4
к:3
вот и вся разница
0
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 82
30.10.2014, 14:04  [ТС]
если вот по моему заданию которое я писал, то как у вас получается правильно?) и если нетрудно все же напиши комментарии к каждой строчке!
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
30.10.2014, 14:31
Sergeyygra,
начнем с того что в самом задании присутствует некоторая диспозиция, а именно
Цитата Сообщение от Sergeyygra Посмотреть сообщение
...удалить повторяющиеся. Вывести исходную строку и результат обработки строки.
Т.е., как я понял, исходную строку портить нельзя. Поэтому я не удаляю из нее, а копирую по одному символу в новую строку и в еще одной строке запоминаю какие символы и сколько раз повторились.
Если стоит вопрос принципиально в удалении из строки, могу исправить.
1
33 / 33 / 43
Регистрация: 07.02.2014
Сообщений: 89
30.10.2014, 15:34
Для примера можно взять такую строку : vccthhpdxmmr
Тогда получается что повторов одинаковых букв 3 штуки.
сс - 1 повтор
hh - 1 повтор
mm - 1 повтор
Всего 3 повтора.
если ввести такую строку : duuukeepsssszx
то в этом случае будут считатся только те буквы которые будут повторяться
uuu 2 повтора (буква -u- повторяется 2 раза)
ee 1 повтор (буква -e- повторяется 1 раз)
ssss 3 повтора (буква -s- повторяется 3 раза)
Всего получается 6 повторов.
1
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 82
31.10.2014, 13:21  [ТС]
спасибо всем за объяснения, все понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2014, 13:21
Помогаю со студенческими работами здесь

В заданной последовательности символов определить количество символов «*», стоящих после двоеточия
Дана последовательность символов, заканчивающаяся точкой. Известно, что среди этих символов есть двоеточие. Определить количество символов...

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

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

Определить количество символов «*», стоящих после двоеточия
Дана последовательность символов, заканчивающаяся точкой. Известно, что среди этих символов есть двоеточие. Определить количество символов...

Определить количество одинаковых символов в последовательности
2)Дана последовательность символов, в начале которой имеется некоторое количество одинаковых символов. Определить это количество.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru