0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
1

Удалить часть текста между словами,которые вводятся с клавиатуры

15.11.2013, 20:00. Показов 2303. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Удалить часть текста между словами,которые вводятся с клавиатуры.
Собственно,вот и задание.Поможете?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2013, 20:00
Ответы с готовыми решениями:

Выделить часть текста между словами, которые вводятся с клавиатуры
вот сообственно задание 8. Виділити частину тексту між словами, що вводяться з клавіатури....

Выделить часть текста между словами, вводимыми с клавиатуры
Вот сообственно задание: Выделить часть текста между словами, вводимыми с клавиатуры. ...

Вывести часть приведенного текста, расположенную между словами "завершено" и "есть"
Помогите, плиз. Задача на с++ Вывести часть приведенного текста, расположенная между словами...

Вычислить среднее арифметическое последовательности чисел, которые вводятся с клавиатуры
1. Вычислить среднее арифметическое последовательность чисел, которые вводятся с клавиатуры....

13
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
15.11.2013, 20:02 2
Вы можете написать условия нормально хотя бы, откуда этот текст берётся?
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 20:07  [ТС] 3
текст заданый,т.е. уже выведеный на экран
0
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
15.11.2013, 20:22 4
можете пожалуйста пояснить, что значит "Удалить часть текста между словами"? Имеется ввиду рандомно удалить? Удалить текст между первым и последним словом или пользователь задает, между чем и чем удалить?
Я имею ввиду, поясните конкретно условие (приведите пример пожалуйста)...

А вообще, проблему можно решить, например, тем, что вы знаете индексы между которыми следует удалить текст и удаление можно сделать путем копирования и дописывания конца строки, например:
C++
1
2
3
4
5
6
int start = 5, end = 10;
char text[] = "Тут типа текст Тут типа текст ";
 
int i;
for(i = 0; text[end+i - 1] != '\0'; ++i)
     text[start+i] = text[end+i];
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 20:32  [ТС] 5
Нужно удалить все слова,которые располагаются между 2-мя введенными.Т.е "мама долго мыла раму",
вводим 1слово--> мама
вводим 2слово-->раму
должны получить в итоге на экране "долго мыла"
0
0 / 0 / 1
Регистрация: 15.11.2013
Сообщений: 4
15.11.2013, 20:42 6
Вы ведь с гетлайна вводите текст? Воспользуйтесь функцией для текстового типа имя_стринга.erase(имя_стринга.begin()+x, имя_стринга.end()-y),где "х"- номер слова,после которого надо удалить,а "у" слово,которым заканчивается нужный интервал для удаления. удачи
0
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
15.11.2013, 20:54 7
Цитата Сообщение от Merderik Посмотреть сообщение
должны получить в итоге на экране "долго мыла"
Судя по описанию, это не удаление "между слов", а сохранение части, которая находится между словами... в противном случае, должно получиться "мама раму"...
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 21:08  [ТС] 8
Я не ввожу исходный текст.Я ввожу только слова,между которыми мне нужно удалить.Поэтому слова ,думаю,можно вводить с помощью cin>>

Добавлено через 1 минуту
MrCath, точно!Спасибо,на автомате написал.Именно "мама раму".Вот же)

Добавлено через 8 минут
Прошу прощение за введение в заблуждение.
0
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
15.11.2013, 21:11 9
Боже мой, сейчас запилим)
Только пельмени пожарю))

т.к. c++ Не обладает (или мой мои заголовочные файлы особенные) функциями IndexOf у стрингов, потому путем сравнения можно циклом найти 2 интересующих нас индекса, а далее либо функцией natiasoft, либо моим циклом удалить ненужную часть)

Если не додумаешь, то подожди чуть, я выложу соурс)
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 21:14  [ТС] 10
я подожду)Надо бы и себе подкрепиться,учеба(
0
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
15.11.2013, 21:50 11
Пельмени пожарил, спс, что подождал)

Можно вот так:
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
52
53
54
55
#include <iostream>
#include <windows.h>
#include <string>
 
// функция нахождения индекса, где начинается кусок, который ты ищешь. Если его не найдено, то она вернет -1
int IndexOf(std::string text, std::string findtext)
{
    int find = -1;
 
    for(int i = 0; i < text.length(); ++i)
            if(text.substr(i, findtext.length()) == findtext)
            {
                find = i;
                break;
            }
 
    return find;
}
 
int main()
{
    //чтобы выводился русский текст нормально
    setlocale(LC_ALL, "rus");
 
    std::string text = "Мама долго мыла раму";
    std::string sStart, sEnd;
 
    //тут махинация с изменением CP, т.к. иначе программа не поймет русские буквы при вводе
    int CP = GetConsoleCP();
    SetConsoleCP(1251);
    std::cin >> sStart;
    std::cin >> sEnd;
    SetConsoleCP(CP);
 
    int start = IndexOf(text, sStart);
    int end = IndexOf(text, sEnd);
    
    if(start != -1 && end != -1)
    {
        start += sStart.length();
        
        //вырезаем
        int i;
        for(i = 0; end+i <= text.length(); ++i)
            text[start+i +1 /* +1 чтобы первый пробел остался */] = text[end+i];
 
        //выводим нужный нам кусок
        std::cout << text.substr(0, sStart.length() + 1 + sEnd.length()) << std::endl;
    }
    else
        std::cout << "Искомых слов не найдено !\n";
 
    system("pause");
    return 0;
}
При выводе вышло не очень красиво, но это лучше демонстрирует идею)

Цитата Сообщение от Merderik Посмотреть сообщение
учеба(
Кто кодит, а кто к пробнику ЕГЭ по русскому готовится)
2
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 22:04  [ТС] 12
Спасибо)
0
5 / 5 / 1
Регистрация: 15.11.2013
Сообщений: 99
15.11.2013, 22:05 13
а не проще использовать parse и в нем указать оба слова?
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 22:15  [ТС] 14
snikes, я не знаю что это такое(
0
15.11.2013, 22:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2013, 22:15
Помогаю со студенческими работами здесь

Программа, что выводит среднее арифметическое последовательности дробных чисел, которые вводятся с клавиатуры
Что делать: не получается ввести количество чисел, сразу идет ввод последовательности? Итог...

Строка: Удалить лишние пробелы между словами
Задание: нужно удалить лишние пробелы между словами (если один пробел, то его нужно оставить). #...

Поиск текста в файле между двумя данными словами
Привет всем. Подскажитье, как можно найти текст (неизвезный) между двух извесных слов в файле?...

Вычислить сумму кодов всех символов, которые в цикле вводятся с клавиатуры до нажатия на клавишу Esc.
Вычислить сумму кодов всех символов, которые в цикле вводятся с клавиатуры до нажатия на клавишу...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru