Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 10.04.2018
Сообщений: 6
1

Убрать слово из массива char

10.05.2018, 11:57. Показов 5950. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужна помощь. Нужно убрать определенные символы и все слова, которые начинаются на первую букву текста. С удаление символов я разобрался, а вот с удалением слов нет.
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
#include "stdafx.h"
#include <iostream>
 
#include <string>
 
using namespace std;
 
 
int main()
{
    char s[] = "Hello world, htat HEl what's ap HIDF";  //исходная строка 
    char o = 'o'; //удаляемый символ
    char a = 'a';
    cout << s << endl;//вывод строки
 
                      //Удаление из строки s всех вхождений символа 'а'
    int i = 0;//индекс для исходной строки
    int j = i;//индекс для модифицированной строки
 
              //цикл модификации исходной строки
    while (s[i])//пока в строке не нулевой байт
    {
        //проверить текущий символ строки
        if (s[i] != o && s[i] != a) //если s[i] не равен 'a' и 'o'
 
                       //переписать текущий символ строки по новому индексу j
                       // и  увеличить индекс j единицу
            s[j++] = s[i];
        // и увеличить индекс i на единицу
        i++;
    }
    //запись нулевого байта в конец модифицированной строки
    s[j] = '\0';
    for (int i = 0; i < strlen(s); i++)
    {
        if (s[i] == ' ' && s[i+1] == s[0]   )
        {
                s[i+1] = 'j';
        
        }
    }//вывод результата
 
    cout << s << endl;
    
    cin.get();
    return 0;
    
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2018, 11:57
Ответы с готовыми решениями:

Как убрать из char массива пробел
Дана переменная char *str2; В каждом элементе находится слово и в нём пробел. Подскажите как...

В чем отличие двумерного массива типа char от массива указателей на char?
В чем отличие двумерного массива типа char и массива указателей на char ?

array char* to char* (значения массива указателей в один указатель)
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть...

Поворот массива на 90 градусов (cannot convert form char to char*)
Пытаюсь повернуть массив на 90 градусов. Понимаю что проблема в преобразовании данных, но не знаю...

4
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
10.05.2018, 12:07 2
что значит удалить?
из массива уже ничего не удалить, у него фиксированный размер.
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
10.05.2018, 12:45 3
Цитата Сообщение от SimpleJack Посмотреть сообщение
С удаление символов я разобрался
можно проще
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstring>
 
 
int main()
{
    char str[] = "Hello world, htat HEl what's ap HIDF";  //исходная строка 
    char sym[] = "ao"; //удаляемые символы
    for (char* p1 = str, *p2 = str; *p2 = *p1; ++p1)
    {
        if (!strchr(sym, *p2) && ++p2)
        {
        }
    }
    std::cout << str << std::endl;
}
0
0 / 0 / 0
Регистрация: 10.04.2018
Сообщений: 6
10.05.2018, 14:40  [ТС] 4
GbaLog-, под удалением я подразумеваю или замену элемента массива на какой-то другой элемент, или замену на ' '.

Добавлено через 1 минуту
igorrr37, Видел подобное решение, но мне показалось что данный мною вариант яснее в плане понимания.
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
10.05.2018, 16:27 5
удаление слов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <regex>
using namespace std::string_literals;
 
 
int main()
{
    char str[] = "hello world, that ,hEl hel what's ap hIDF";  //исходная строка 
    std::regex reg{ "(^|[^[:alpha:]])"s + *str + "[[:alpha:]]*(?=$|[^[:alpha:]])" }; // слово
    auto ie = std::regex_replace(str, str, str + strlen(str), reg, "$1"); // удаление слов
    *ie = 0; 
    std::cout << str << std::endl;
}
0
10.05.2018, 16:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2018, 16:27
Помогаю со студенческими работами здесь

Приведение массива char[] (или char* ) в LPCTSTR
Задача: пользователь вводит директорию, нужно проверить существует ли эта директория. Функция...

Запись в *char элемента из массива *char[i]
Есть динамический массив, например char *drives = {&quot;A:&quot;, &quot;B:&quot;, &quot;C:&quot;, &quot;D:&quot;, &quot;E:&quot;, &quot;F:&quot;,...

Вивести саме довге слово из 3 массивов char
Вивести саме довге слово из 3 массивов char char name,surname,patronymic; Добавлено через 11...

Как убрать слово из строки
Привет! Мне надо убрать последнее повторяющееся слово из строки $str = &quot; idR = $v OR idR = $v OR...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru