Форум программистов, компьютерный форум CyberForum.ru

Помощь в работе со строками (Дана строка. Заменить в ней каждую из групп, содержащих 3 или более одинаковых символов многоточием) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Максимально удаленная точка http://www.cyberforum.ru/cpp-beginners/thread794858.html
Удалите, пожалуйста, тему.
C++ Звуковые импульсы Привет всем! Подскажите, пожалуйста, как реализовать или в каком направлении двигаться при создании программы, генерирующей звуковые импульсы, примерно каждые 0.02 сек. Используя функции Beep или PlaySound первые 0.05 сек вообще тишина. Нужно что-то быстрое. http://www.cyberforum.ru/cpp-beginners/thread794856.html
Массив. Проверить имеются ли в нем элементы, значения которых больше нуля C++
Задан массив А, состоящий из n элементов. Проверить имеются ли в нем элементы, значения которых больше нуля. Если такие элементы имеются, определить наименьшее значение k, при котором A>0. Забыл как на с++ писать, а надо сделать практику в институт, помогите пожалуйста.
Значение палиндром C++
Написать функцию определения, является ли строковое значение палиндромом, т.е. симметричной последовательностью символов.
C++ Написать функцию, которая копирует строку на место другого строки и возвращает признак того, что копирование было успешным http://www.cyberforum.ru/cpp-beginners/thread794850.html
Написать функцию, которая копирует строку на место другого строки и возвращает признак того, что копирование было успешным. Если места для копии мало, строка не копируется и возвращается признак неуспеваемости.С++ Спасибо
C++ 2 мерный Массив. Рассчитать элементы матрицы C(n,m) по формуле Всем привет)) не могу собрать все в одно целое : Рассчитать элементы матрицы C(n,m) по формуле C=Tr(A)B, где -Tr(A)=(N i=1) СУММА aii - след матрицы A(n,m), B(n,m) – исходная матрица. вот мой код: #include <iostream> #include <math.h> #include <stdlib.h> подробнее

Показать сообщение отдельно
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
25.02.2013, 22:07     Помощь в работе со строками (Дана строка. Заменить в ней каждую из групп, содержащих 3 или более одинаковых символов многоточием)
Проще всего это сделать, используя два буфера - входной и выходной.

1. Сканируем строку посимвольно
2. Пока первый и второй символы различны, копируем текущий в выходной буфер
3. Если первый и второй совпали, проверяем, совпадают ли они с третьим. Если да, копируем в выходной буфер многоточие, поднимаем флаг группы и продвигаемся на два символа вперед. Пока установлен флаг группы, продвигаемся на символ
4. Если текущий и следующий НЕ совпали, сбрасываем флаг группы и переходим к п. 2

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

Иными словами, если вы редактируете строку на лету, необходимо помнить позиции редактирования, при двух буферах просто переключаете вывод между текущий символ/ничего/многоточие.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru