Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 19

Удаление пробелов

03.11.2015, 12:24. Показов 1653. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток ув. форумчане! Дали задание до 6.11, вчера вроде понял как делать, а сегодня что-то голова не варит. В общем сама суть задания есть текст с пробелами больше чем 1шт. Нужно написать метод "clean" который будет делать такое : 1) Кол-во пробелов больше чем 1 - заменять на 1.
2) Если пробел стоит перед самой первой буквой в строке (т.е вместо заглавной буквы) - то его необходимо удалить.
3) Если строка содержит только одни пробелы без символов - то строка должна стать пустой.
Примерно что должно выйти :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char n1[] = "a bc def ghijk";
    cout << "До: >" << n1 << "<" << endl;
    clean(n1);
    cout << "После: >" << n1 << "<" << endl;
 
    char n2[] = " a   bc def   ghijk";
    cout << "До: >" << n2 << "<" << endl;
    clean(n2);
    cout << "После: >" << n2 << "<" << endl;
 
    char n3[] = "   ";
    cout << "До: >" << n3 << "<" << endl;
    clean(n3);
    cout << "После: >" << n3 << "<" << endl;
Результат :
До: >a bc def ghijk<
После: >a bc def ghijk<
До: > a bc def ghijk <
После: >a bc def ghijk<
До: > <
После: ><

Буду благодарен за помощь!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2015, 12:24
Ответы с готовыми решениями:

Создание программы со своей библиотекой ( удаление элементов с N по M в строке и удаление лишних пробелов(если 2 и более оставить один))
добрый день. помогите, пожалуйста понять мои ошибки в работе. Мне нужно написать программу со своей библиотекой, которая включает в себя...

Удаление пробелов
Помогите пожалуйста доделать программу(удаление пробелов в начале и в конце строки). Само задание:Удаление лишних пробелов в строке...

удаление пробелов
предложите 2 варианта функции, удаляющей из строки ведущие и концевые пробелы

10
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
03.11.2015, 12:37
Цитата Сообщение от dushka_93 Посмотреть сообщение
clean(n2);
где реализация метода?
0
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 19
03.11.2015, 13:27  [ТС]
Вот я прошу написать реализацию метода clean(), у меня получилось удалить больше одного пробела в середине строки, а вот по бокам строки и в том случае когда строка состоит из одних пробелов - нет. Если не сложно - то помогите с целой реализацией метода, так как я в с++ пока чайник, облазил все, перепробовал многое, но пока мало что выходит...
0
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 19
03.11.2015, 13:36
ну как то так
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
33
#include <iostream>
#include <conio.h>
 
char * Clean(char*);
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "rus");
    char *str=new char[];
    cout << "Введите строку" << endl;
    cin.getline(str,50);
    
    cout << str << endl;
    char *newstr = Clean(str);
    cout << newstr << endl;
    _getch();
}
 
char* Clean(char *str)
{
 
    char *newstr = new char[];
    int j = 0;
    for (int i = 0; str[i]!='\0'; i++)
    {
        if (str[i] == ' ') ++i; //если нужно удалить 2 пробела ++i меняем на continue;
        newstr[j] = str[i];
        ++j;
    }
    newstr[j] = '\0';
    return newstr;
}
0
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 8
03.11.2015, 13:45
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <conio.h>
#include <cctype>
#include <string>
using namespace std;
 
void clean(char[], int size);
 
int main()
{
    setlocale(LC_ALL, "russian"); // русифицировать (для того что бы отображался русский текст в консоли)
 
    char n1[] = "a bc def ghijk";
    cout << "До: >" << n1 << "<" << endl;
    cout << "После: " << endl;
    clean(n1, (sizeof(n1) / sizeof(char))); //определяем размер для передачи в функцию.
 
 
    char n2[] = " a   bc def   ghijk";
    cout << "До: >" << n2 << "<" << endl;
    cout << "После: " << endl;
    clean(n2, (sizeof(n2) / sizeof(char))); // определяем размер для передачи в функцию. 
 
    char n3[] = "   ";
    cout << "До: >" << n3 << "<" << endl;
    cout << "После: " << endl;
    clean(n3, (sizeof(n3) / sizeof(char))); //определяем размер для передачи в функцию.
 
    return 1; // успешное завершение
}
 
void clean(char Array[], int size)
{
    char p = 32; // код пробела в ANSI
    int probel = 0; // для подсчета кол-во пробелов
 
    for (int a = 0; a < size; a++)
    {
        if (Array[a] == p)
            // 
 
        if (probel > 2)
            //
    }
 
    for (int c = 0; c < size; c++)
    {
        cout << Array[c];
    }
    cout << endl;
}
попробовал , чет не выходит.

как удалить символ из строки ?
0
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 19
03.11.2015, 13:57  [ТС]
смысл задания в том что если между символами 2 и больше пробелов - то заменить на один, если в начале и в конце строки стоят пробелы - удалить их, а если строка состоит из одних пробелов - то удалить все пробелы из строки
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
03.11.2015, 14:03
Цитата Сообщение от maks1710 Посмотреть сообщение
C++
1
char *newstr = new char[];
объяснить сможете, что вы здесь делаете?
0
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 19
03.11.2015, 14:05
выделяю память для новой строки
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
03.11.2015, 14:06
maks1710, точно? Лично я вижу, что ни подо что здесь память не выделяется. Количество элементов не указано.
0
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 19
03.11.2015, 14:07
а какой вариант - создать указатель и не инициализировать его?
ну еще вариант char *newstr=new char[strlen(str)];
но особой разницы я не вижу.
Проясните?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
03.11.2015, 14:31
А когда укажете количество элементов, в main не забудьте после использования освободить эту память.

Добавлено через 1 минуту
maks1710,
C++
1
2
std::size_t len = strlen(str);
char *newstr = new char[len+1];
Добавлено через 1 минуту
Хотя судя по задаче, не обязательно создавать новую строку и выделять под нее память. Можно работать с исходной строкой.

Добавлено через 20 минут
Цитата Сообщение от maks1710 Посмотреть сообщение
Проясните?
Память нужно уметь выделять правильно. То, как это делаете вы, неправильно. Выделять нужно определенное количество элементов, а не пустоту, как у вас. Компилятор сам не настолько умен, чтобы подставлять это значение за вас.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2015, 14:31
Помогаю со студенческими работами здесь

Удаление пробелов
Доброго времени суток ув. форумчане! Дали задание до 6.11, вчера вроде понял как делать, а сегодня что-то голова не варит. В общем сама...

Удаление пробелов
Нужна программа , которая удаляет все пробелы в строке! Помогите пожалуйста!

Удаление пробелов в строке
вот такая задача надо что бы программа удаляла первый и последний пробел в строке. строку вводим мы сами. я вот написал что бы удаляла все...

Удаление лишних пробелов
Знаю, тема изъёрзана) но вот код, и своих функций он не выполняет( #include &lt;iostream&gt; using namespace std; int main() ...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru