Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
yatak
0 / 0 / 0
Регистрация: 08.11.2012
Сообщений: 2
#1

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

11.11.2012, 18:18. Просмотров 490. Ответов 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))
результат тот же
помогите, пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2012, 18:18
Ответы с готовыми решениями:

В символьной строке удалить все слова, состоящие более чем из N - букв
Напихал все что можно, не работает. Программирования не знаю похоже):wall: ...

В символьной строке удалить все слова, состоящие более чем из N букв
Не использовать дефолтные функции работы со строками (например strstr, strlen)...

Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за пробелом)
Последовательности следующих друг за другом пробелов заменить одним пробелом...

Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом
Задана строка символов. Преобразовать эту строку следующим образом: удалить...

Записать слова, состоящие более чем из 10 букв
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstring&gt; using namespace...

3
Croessmah
++Ͻ
14535 / 8296 / 1558
Регистрация: 27.09.2012
Сообщений: 20,359
Записей в блоге: 3
Завершенные тесты: 1
11.11.2012, 18:55 #2
Цитата Сообщение от yatak Посмотреть сообщение
while (*ps3 == ' ' && *(ps3 + 1) == ' ')
попробуйте убрать
C++
1
&& *(ps3 + 1) == ' '
0
yatak
0 / 0 / 0
Регистрация: 08.11.2012
Сообщений: 2
12.11.2012, 10:54 #3
если так сделать, то он будет искать и удалять все пробелы,
а мне нужно только, чтобы были удалены последовательности из 2ух и более пробелов
0
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
12.11.2012, 11:21 #4
yatak, вам нужно сразу найти индекс первого и последнего пробела, сохранить их и только потом удалять по этим индексам.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2012, 11:21

Рассмотреть отрезки последовательности, состоящие из степеней пятерки
Здравствуйте, нужно написать код с помощью функции на с++. Вот условие: Даны...

Рассмотреть отрезки последовательности,состоящие из одинаковых чисел
Доброе утро форум беда пришла не одна.:cry: Не знаю как бороться с этим :-|...

Удалить слова, состоящие ровно из К символов
Ввести стоку, распечатать. Удалить слова, состоящие ровно из К...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru