Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Merderik
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 20:00     Удалить часть текста между словами,которые вводятся с клавиатуры #1
Удалить часть текста между словами,которые вводятся с клавиатуры.
Собственно,вот и задание.Поможете?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2013, 20:00     Удалить часть текста между словами,которые вводятся с клавиатуры
Посмотрите здесь:

Вычислить сумму кодов всех символов, которые в цикле вводятся с клавиатуры до нажатия на клавишу Esc. C++
C++ Работа с файлами. Удалить все лишние пробелы, оставив между словами не более одного пробела
Строка: Удалить лишние пробелы между словами C++
выделить часть текста между словами которые вводятся с клавиатуры C++
C++ Выделить часть текста между словами, вводимыми с клавиатуры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
15.11.2013, 20:02     Удалить часть текста между словами,которые вводятся с клавиатуры #2
Вы можете написать условия нормально хотя бы, откуда этот текст берётся?
Merderik
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 20:07  [ТС]     Удалить часть текста между словами,которые вводятся с клавиатуры #3
текст заданый,т.е. уже выведеный на экран
MrCath
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];
Merderik
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 20:32  [ТС]     Удалить часть текста между словами,которые вводятся с клавиатуры #5
Нужно удалить все слова,которые располагаются между 2-мя введенными.Т.е "мама долго мыла раму",
вводим 1слово--> мама
вводим 2слово-->раму
должны получить в итоге на экране "долго мыла"
natiasoft
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 4
15.11.2013, 20:42     Удалить часть текста между словами,которые вводятся с клавиатуры #6
Вы ведь с гетлайна вводите текст? Воспользуйтесь функцией для текстового типа имя_стринга.erase(имя_стринга.begin()+x, имя_стринга.end()-y),где "х"- номер слова,после которого надо удалить,а "у" слово,которым заканчивается нужный интервал для удаления. удачи
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
15.11.2013, 20:54     Удалить часть текста между словами,которые вводятся с клавиатуры #7
Цитата Сообщение от Merderik Посмотреть сообщение
должны получить в итоге на экране "долго мыла"
Судя по описанию, это не удаление "между слов", а сохранение части, которая находится между словами... в противном случае, должно получиться "мама раму"...
Merderik
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 21:08  [ТС]     Удалить часть текста между словами,которые вводятся с клавиатуры #8
Я не ввожу исходный текст.Я ввожу только слова,между которыми мне нужно удалить.Поэтому слова ,думаю,можно вводить с помощью cin>>

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

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

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

Если не додумаешь, то подожди чуть, я выложу соурс)
Merderik
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 21:14  [ТС]     Удалить часть текста между словами,которые вводятся с клавиатуры #10
я подожду)Надо бы и себе подкрепиться,учеба(
MrCath
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 Посмотреть сообщение
учеба(
Кто кодит, а кто к пробнику ЕГЭ по русскому готовится)
Merderik
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 22:04  [ТС]     Удалить часть текста между словами,которые вводятся с клавиатуры #12
Спасибо)
snikes
5 / 5 / 0
Регистрация: 15.11.2013
Сообщений: 99
15.11.2013, 22:05     Удалить часть текста между словами,которые вводятся с клавиатуры #13
а не проще использовать parse и в нем указать оба слова?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2013, 22:15     Удалить часть текста между словами,которые вводятся с клавиатуры
Еще ссылки по теме:

C++ Поиск текста в файле между двумя данными словами
Удалить в строке лишние пробелы, оставив между словами ровно по одному C++
C++ Вычислить среднее арифметическое последовательности чисел, которые вводятся с клавиатуры

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

Или воспользуйтесь поиском по форуму:
Merderik
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 20
15.11.2013, 22:15  [ТС]     Удалить часть текста между словами,которые вводятся с клавиатуры #14
snikes, я не знаю что это такое(
Yandex
Объявления
15.11.2013, 22:15     Удалить часть текста между словами,которые вводятся с клавиатуры
Ответ Создать тему
Опции темы

Текущее время: 22:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru