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

Удаление лишних (подряд идущих) разделителей при разделении строки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить из очереди отрицательные числа http://www.cyberforum.ru/cpp-beginners/thread1171584.html
1 создать очередь( элементы добавлять динамически - push) 2 вывод на экран 3 удалить отрицательные элементы 4 вывод на экран 5 удалить все созданные контейнеры Неужели так трудно переписать!!!!!!!! интерфейс http://www.cyberforum.ru/attachment.php?attachmentid=397092&stc=1&d=1399733687
C++ Как удалить элементы динамического массива, а не сам массив? Всем здравствуйте и помогите пожалуйста разобраться. Как удалить элементы динамического массива, а не сам массив? Если что, вот пример кода в котором идёт обращение к несуществующей области памяти: for(int i=0; i<size; i++) { char *temp_word = new char ; if(isspace(string)) continue; http://www.cyberforum.ru/cpp-beginners/thread1171582.html
C++ Имитация работы станка
Добрый вечер! Прошу помощи в решении следующей задачи. Необходимо симитировать работу такого станка: В первый ящик попадает деталь в интервале от 1 до 5 секунд. При попадании счетчик увеличивается (+1) Станок обрабатывает деталь в течении 5 секунд. При выборке днталей из ящика счетчик уменьшается (-1) Подключить генератор случайных чисел от 1 до 5 секунд. Закончить данный процесс через 60...
C++ Моделирование работы концентратора
Добрый вечер! Задание следующего характера: Необходимо симитировать работу концентратора в сети, а именно отправить пакет от отправителя к получателю, сравнивая соответствующие ip адреса. Намекните как это можно реализовать, в сторону каких функций, буду благодарен за любую информацию! Возможно на других языках программирования
C++ Имитация менеджера запуска приложений http://www.cyberforum.ru/cpp-beginners/thread1171564.html
Добрый вечер! Подскажите пожалуйста какие методы, функции использовать для решения следующей задачи: Необходимо разработать менеджер запуска программ Реализовать: 1) Установка пути к *.exe файлу 2) Указывать список и время запущеных программ Буду благодарен за помощь!
C++ Как создать запросы в С++, для базы данных? Любым способом. подробнее

Показать сообщение отдельно
Quarintium
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 34
10.05.2014, 19:17     Удаление лишних (подряд идущих) разделителей при разделении строки
Здравствуйте!
Задача такая: вводятся в массив razd[N] N разделителей(ну там что то на подобии "!" , "." , "?" , "пробел" и тд... только этот разделитель может быть любым символом), потом вводится текст. В этом тексте могут повторяться разделители к примру так:
мамаtqwertqwertqwertqwertqwertqwertqwertqwertqweerrrrrttttqqqqqwwwwwweeeeeerrrrrttttqqqqqwwwwwweeeeeerrrrrttttqqqqqwwwwwweeeeeerrrrrttttqqqqqwwwwwweeeeeerrrrrttttqqqqqwwwwwweeeeeerrrrrttttqqqqqwwwwwweeeeeerrrrrttttqqqqqwwwwwweeeeeerrrrrttttqqqqqwwwwwweeeeeerrrrrttttqqqqqwwwwweeeeeerrrrrttttИраwww
где q, w, e, r, t - это разделители.

Нужно лишние разделители убрать. Вроде должно что то такое получится: мамаtИраw.

Написал 2 функции для убирания лишних разделителей...
Первая:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*начинает перебирать по порядку все символы массива, если находятся 
    два одинаковых разделителя, то оставшийся массив сдвигается на 1 влево*/
void edit1()
{
  int size=strlen(text);
  int q;
  printf("Идёт преобразование текста. Пожалуйста подождите\n");
  for(int i=0; i<size; i++)
    for(int j=0; j<KolRaz; j++)
      if(*(text+i)==*(razd+j))
        while(*(text+i)==*(text+i+1))
          for(q=i; q<size; q++)
            *(text+q)=*(text+1+q);
  printf("Готово\n");
  puts(text);
  menu_text();
}

Вторая:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*начинает перебирать по порядку все символы массива, если находятся 
    два подряд разных разделителя, то оставшийся массив сдвигается на 1 влево*/
void edit2()
{
  int w,size=strlen(text);
  printf("Идёт преобразование текста. Пожалуйста подождите\n");
  for(int i=0; i<size; i++)
    for(int j=0; j<KolRaz; j++)
      if(*(text+i)==*(razd+j))
        for(int q=0; q<KolRaz; q++)
          if(*(text+i+1)==*(razd+q))
            for(w=i+1; w<size; w++)
              *(text+w)=*(text+1+w);
  printf("Готово\n");
  puts(text);
  menu_text();
}

Можно ли их как то объединить?
Есть ли иные варианты решения проблемы с удалением лишних разделителей?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru