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

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

Войти
Регистрация
Восстановить пароль
 
Zheka1992
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 4
#1

Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом - C++

06.01.2013, 17:25. Просмотров 878. Ответов 5
Метки нет (Все метки)

Задана строка символов. Преобразовать эту строку следующим образом: удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2013, 17:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом (C++):

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

Заменить любую группу пробелов одним - C++
помогите пожалуйста с лабой. необходимо сжать строку , заменив любую группу пробелов одним пробелом.Исходную строку и результат вывести...

О передаче массива в функцию, которая заменяет серию пробелов одним пробелом - C++
Нужно написать функцию, чтоб она получала символьный массив L, и возвращала массив Lsource в котором подряд идущие пробельные символы...

Если предложение начинается с пробелов, считать строку после пробелов. Правильно ли работает функция? - C++
Скажите пожалуйста правильно ли я написала функцию которая: если предложение начинается с пробелов она считывает строку после пробелов то...

Доделать программу, которая заменяет группы пробелов одним - C++
Помогите доделать программу, чтобы группы пробелов,которые стоят в начале и конце строки удалились, а остальные так и заменялись на один. ...

Заменить несколько подряд идущих пробелов одним - C++
нужна программа какая заменяет несколько подряд идущих пробелов одним и выводит полученный результат в std::cout. Никаких других символов,...

5
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,643
Записей в блоге: 3
Завершенные тесты: 1
06.01.2013, 18:33 #2
C++
1
2
3
4
5
6
7
8
void Trim_SD(char * dest, char * source){
    for(char *p1=source,*p2=dest; (*p2=*p1);++p1,++p2){
        if(*p1!=' ') continue;
        for(;*p1==' ';++p1);
            p2+=(p2==dest || !(*p1))?0:1;
            *p2=*p1;
    }
}
0
Zheka1992
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 4
06.01.2013, 19:34  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h> 
#include <stdlib.h>
#include <conio.h> 
 
int WasFound(char const str[], int i, int from)
{
    for(int j=from; j<i; j++) if(str[j]==str[i]) return 1;
    return 0;
}
    void Trim_SD(char * dest, char * source)
{
    for(char *p1=source,*p2=dest; 
    (*p2=*p1);++p1,++p2)
    {
        if(*p1!=' ') continue;
        for(;*p1==' ';++p1);
        p2+=(p2==dest || !(*p1))?0:1;
        *p2=*p1;
    }
}
    int main()
{
    char str1[256], str2[256]=""; 
    printf("Program make string frrom Your string removing each repeating character in each word\n");
    printf("Enter Your string:\n");
    gets(str1);
    Trim_SD(str1, str2);
    printf("String after convertion:\n");
    puts(str2);
    system("PAUSE");
    return EXIT_SUCCESS;
}

Исправьте пожалуйста ошибки
Строка после не появляется
0
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,643
Записей в блоге: 3
Завершенные тесты: 1
06.01.2013, 19:40 #4
C++
1
Trim_SD(str2, str1);
И еще, функция устроена так, что можно исправить саму строку:
C++
1
2
3
Trim_SD(str1, str1);
//...
puts(str1);
1
Igor3D
965 / 498 / 50
Регистрация: 01.10.2012
Сообщений: 2,489
06.01.2013, 19:47 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void RemBlank( char * src )
{
  char * dst = src;
  bool prevBlank = false;
  bool first = true;
  while (*src) {
   if (*src == ' ')  
    prevBlank = true;
   else {
     if (prevBlank && !first) 
      *(dst++) = ' ';
     *(dst++) = *src;
     prevBlank = false;
     first = false;
   }
   ++src;
  }
  *dst = 0;
}
1
Zheka1992
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 4
06.01.2013, 20:01  [ТС] #6
Все Спасибо получилось
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2013, 20:01
Привет! Вот еще темы с ответами:

Заменить несколько подряд идущих пробелов одним - C++
Напишите программу, которая посимвольно читает из std::cin, пока не достигнет конца потока ввода, и заменяет несколько подряд идущих...

Заменить серию пробелов одним символом пробела - C++
Вот моя задача: преобразовать данный текст, заменяя всякую серию пробелов одним символом пробела. Вот что у меня получилось. не могу...

Заменить в строке каждую последовательность из двух и более пробелов на один пробел - C++
Разработать алгоритм обработки строки символов,которая может содержать буквы английского алфавита,цифры,знаки препинания,пробелы,знаки...

В массиве каждую группу рядом стоящих одинаковых элементов заменить одним и тем же значением - C++
в массиве целых чисел каждую группу рядом стоящих одинаковых элементов заменить на одним и тем же значением


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
06.01.2013, 20:01
Ответ Создать тему
Опции темы

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