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

Программа, удаляющая определённое слово

23.06.2018, 00:45. Показов 2042. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание следующее:
В многострочном тексте (char text[20][81]) удалить заданное слово (все его вхождения). Слово – это непрерывная последовательность букв и/или цифр. Разделителями слов могут быть любые другие символы.

Реализовать и использовать функцию удаления слова в строке:

void deleteWords(char str[81], const char word[21]);

Входные данные:
str - исходная строка
word - удаляемое слово
Выходные данные:
str – строка после удаления слов

Реализовать и использовать функцию поиска слова в строке:

int searchWord( const char str[81], const char word[21]);

Входные данные:
str – исходная строка
word – искомое слово
Выходные данные:
возвращаемое значение - индекс первого вхождения искомого слова в строку; возвращает -1, если слово не найдено

Реализовать и использовать функцию усечения (сокращения) строки:

void cutString(char str[81], int beginPos, int endPos);

Входные данные:
str – исходная строка
beginPos, endPos – начальная и конечная позиции подстроки, которую необходимо вырезать (удалить)
Выходные данные:
str – усеченная строка

Формат входных данных. [слово] [M] [1-я строка] [2-я строка] и т.д. M – кол-во строк в тексте, целое число в диапазоне [1, 20].
Формат выходных данных. [1-я строка] [перевод строки] [2-я строка] и т.д.; пустые строки не печатать; если все строки пустые, то напечатайте сообщение «no solution». Пустыми строками считать строки, в которых либо нет символов, либо они содержат только «белые» разделители.

Поначалу пытался разобрать и решить это задание не используя собственные функции, использовал memcpy. Столкнулся с проблемой, что пустые строки никуда не деваются и при упоминании нужного мне слова как части другого, стиралось то, что не нужно(например нужное слово:tty, дано слово:rttty, остаётся лишь rt). Окончательно запутался и так и не смог сделать эти функции таким образом, чтобы не создавался новый массив, а видоизменялся начальный и чтобы не было пустых строк. Может кто помочь? Особенно не ясно как реализовать указанную в задании функцию cutString.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2018, 00:45
Ответы с готовыми решениями:

Программа, удаляющая определённое слово
Задание следующее: В многострочном тексте (char text) удалить заданное слово (все его вхождения)....

Программа удаляющая программы
Привет всем! Хочу написать программу удаляющую другие программы (как Add or Remove Programs в...

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

Программа, удаляющая лишние пробелы
На просторах форума столкнулся с программой по удалению лишних пробелов, объясните пожалуйста...

1
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
23.06.2018, 12:05 2
Лучший ответ Сообщение было отмечено Ymir_Kavalapisy как решение

Решение

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
#include <iostream>
#include <cctype>
#include <cstring>
#define is_delim(c) (std::isspace((c)) || std::ispunct((c)))
 
//затирание слов, а не подстрок
char* remove_words(char* s, const char* w){
    char* t = s;
    if((s = std::strstr(s, w)) == NULL)
        return t;
 
    const size_t n = std::strlen(w);
    for(char* p = s; *s; *s = *p){
        if(!std::strncmp(p, w, n) && (p == t || is_delim(*(p - 1))) && (!*(p + n) || is_delim(*(p + n))))
            p += n;
        else {
            ++s;
            ++p;
        }
    }
    return t;
}
 
int main(void){
    char s[] = "APL, (APL), iAPL, APL APLx, APLAPL /APL/ APL";
    char w[] = "APL";
    std::cout << remove_words(s, w);
    std::cin.get();
    return 0;
}
1
23.06.2018, 12:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2018, 12:05
Помогаю со студенческими работами здесь

Программа удаляющая комментарии из листинга программы С++
помогите пожайлуста , никак не могу разобраться. Создать програму, какая будет удалять с кода...

Программа,удаляющая все чётные цифры из строки
Программа,удаляющая все чётные цифры из строки

Программа удаляющая все комментарии из листинга программы С++
Помогите пожалуйста написать программу,удаляющую все комментарии из листинга программы...

программа, удаляющая из заданного текста все части, заключенные в скобки
Написать программу удаляющую из заданного текста все части, заключенные в круглые скобки, вместе со...

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

В тексте найти определенное слово
задание таково: прочитать первое слово из первого текстовика и найти это слово в другом текстовике...


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

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