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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
yatak
Сообщений: n/a
#1

Удалить последовательности, состоящие из 2 и более пробелов - C++

11.11.2012, 18:18. Просмотров 431. Ответов 3
Метки нет (Все метки)

Задание: удалить последовательности, состоящие из 2 и более пробелов. Использовать новые массивы и блоки запрещено.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include  <iostream>
#include  <string.h>
 
using namespace std;
 
int main()
{
    char tmp [80];
    char *ps;
 
    // Удаляем лишние пробелы. Смещаем указатель до конца выделенной области читая каждый символ.
        // Если символ ' ' и следующий за ним тоже, то в цикле смещаем все символы в памяти влево.
        for (char *ps3 = ps; *ps3; ps3++)
        {
            while (*ps3 == ' ' && *(ps3 + 1) == ' ')
            {
                for (char *ps4 = ps3; *ps4; ps4++)
                {
                    *ps4 = *(ps4+1);
}
Этот код у меня работает, но он оставляет 1 пробел, т.е. если было 12 пробелов он будет удалять, пока не останется один пробел, а мне нужно удалить, чтобы ни 1 не осталось (т.е. "слепить" два слова).
Я пробовала писать

if ((*ps3==' ') && (*(ps3+1)==' '))
{

while((*(ps3+1)==' ') && (*ps3))
результат тот же
помогите, пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2012, 18:18     Удалить последовательности, состоящие из 2 и более пробелов
Посмотрите здесь:

Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за пробелом) C++
В символьной строке удалить все слова, состоящие более чем из N букв C++
Удалить слова, состоящие ровно из К символов C++
Заменить в строке каждую последовательность из двух и более пробелов на один пробел C++
C++ Переписать в новый файл только те строки, в которых более 5 пробелов
Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки C++
Удалить из предложения слова, состоящие менее чем из 3 символов. C++
В символьной строке удалить все слова, состоящие более чем из N - букв C++
C++ Записать слова, состоящие более чем из 10 букв
C++ В строке вывести последовательности состоящие из трех одинаковых подряд идущих символов
C++ В символьной строке удалить все слова, состоящие из N - букв - C++
C++ Рассмотреть отрезки последовательности,состоящие из одинаковых чисел

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12514 / 7076 / 794
Регистрация: 27.09.2012
Сообщений: 17,477
Записей в блоге: 2
Завершенные тесты: 1
11.11.2012, 18:55     Удалить последовательности, состоящие из 2 и более пробелов #2
Цитата Сообщение от yatak Посмотреть сообщение
while (*ps3 == ' ' && *(ps3 + 1) == ' ')
попробуйте убрать
C++
1
&& *(ps3 + 1) == ' '
yatak
Сообщений: n/a
12.11.2012, 10:54     Удалить последовательности, состоящие из 2 и более пробелов #3
если так сделать, то он будет искать и удалять все пробелы,
а мне нужно только, чтобы были удалены последовательности из 2ух и более пробелов
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
12.11.2012, 11:21     Удалить последовательности, состоящие из 2 и более пробелов #4
yatak, вам нужно сразу найти индекс первого и последнего пробела, сохранить их и только потом удалять по этим индексам.
Yandex
Объявления
12.11.2012, 11:21     Удалить последовательности, состоящие из 2 и более пробелов
Ответ Создать тему
Опции темы

Текущее время: 06:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru