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

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

03.11.2015, 12:24. Показов 1588. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru