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

Удалить во всех строках заданного текста первые вхождения введенного пользователем символа

12.04.2018, 20:45. Показов 2681. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать алгоритм и программу. Вводится последовательно N строк (1<=N<=20), длина которых не должна превышать 20 символов. Строки должны состоять из заглавных и строчных латинских букв. Выполнить следующие преобразования:
- удалить во всех строках первые вхождения введенного пользователем символа;
- во всех строках добавить после указанного пользователем символа символ, введенный пользователем.
 Комментарий модератора 
П.5.16.Правил
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.

Вывести результаты преобразований.

Помогите пожалуйста с этой задачей. У меня получается только ввести строку, а дальше не идет. Еще желательно нарисовать от руки блок схему, не обязательно аккуратно
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.04.2018, 20:45
Ответы с готовыми решениями:

Найти индекс последнего вхождения символа, введённого пользователем, в заданную строку
Уважаемые форумчане. Помогите, пожалуйста, написать программу по следующему условию: пользователь вводит отдельно строку и символ,...

Удалить слово, стоящее после заданного слова, во всех строках текста
Здравствуйте, у меня есть свой набросок решения задачи, но проблема в том, что каждое слово имеет ограничение в три символа, а иначе...

Заменить в четных строках текста все вхождения символа 'a' на 'b', а в нечетных - наоборот
Пожалуйста помогите написать программу через QStringList - список строк Дан текст из нескольких строк. Заменить в четных строках все...

33
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347
12.04.2018, 21:11
Цитата Сообщение от Aleksey6898 Посмотреть сообщение
У меня получается только ввести строку
Код хоть прикрепи
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
13.04.2018, 13:24  [ТС]
Нету

Добавлено через 19 секунд
нету
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
13.04.2018, 13:33
Aleksey6898, и как же Вы вводите строку?
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
15.04.2018, 14:25  [ТС]
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 <string>
#include <vector>
using namespace std;
vector<string> lines(const size_t size, const size_t length = 20) {
    string word;
    vector<string> words;
    do {
        cout << "word: ";
        cin >> word;
        const auto len = word.length();
        if (len && len <= length) words.emplace_back(word);
    } while (words.size() < size);
    return words;
}
void print(const vector<string>& words) {
    for (const auto &word : words) cout << word << '\n';
    cout.put('\n');
}
void del_front(vector<string>& words) {
    for (auto &word : words) word.erase(word.begin(), word.begin() + 1);
}
void ins(vector<string>& words, const char letter, const char mark) {
    for (auto &word : words) {
        const auto pos = word.find(mark);
        if (pos != string::npos) word.insert(pos + 1, string() + letter);
    }
}
char get_char(const char* msg) {
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cout << msg;
    return cin.get();
}
size_t get_size(const char* msg, const size_t max_length = 20, const size_t min_length = 1) {
    size_t size;
    do {
        cout << msg;
        cin >> size;
    } while (size < min_length || size > max_length);
    return size;
}
int main() {
    const auto n = get_size("n: ");
    auto words = lines(n);
    system("cls");
    print(words);
    del_front(words);
    print(words);
    const auto mark = get_char("mark: ");
    const auto letter = get_char("letter: ");
    cout.put('\n');
    ins(words, letter, mark);
    print(words);
    system("pause");
}
Вот то что у меня есть, но программа не запускается. Может получится изменить этот код чтобы понятнее стал
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
04.05.2018, 21:48  [ТС]
Разработать программу. Вводится последовательно N строк (1<=N<=20), длина которых не должна превышать 20 символов. Строки должны состоять из заглавных и строчных латинских букв. Выполнить следующие преобразования:
- удалить во всех строках первые вхождения введенного пользователем символа;
- во всех строках добавить после указанного пользователем символа символ, введенный пользователем.
Вывести результаты преобразований.

Вот у меня есть код, но программа не работает. Помогите пожалуйста изменить ее и попонятней сделать. Буду очень благодарен

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 <string>
#include <vector>
using namespace std;
vector<string> lines(const size_t size, const size_t length = 20) {
    string word;
    vector<string> words;
    do {
        cout << "word: ";
        cin >> word;
        const auto len = word.length();
        if (len && len <= length) words.emplace_back(word);
    } while (words.size() < size);
    return words;
}
void print(const vector<string>& words) {
    for (const auto &word : words) cout << word << '\n';
    cout.put('\n');
}
void del_front(vector<string>& words) {
    for (auto &word : words) word.erase(word.begin(), word.begin() + 1);
}
void ins(vector<string>& words, const char letter, const char mark) {
    for (auto &word : words) {
        const auto pos = word.find(mark);
        if (pos != string::npos) word.insert(pos + 1, string() + letter);
    }
}
char get_char(const char* msg) {
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cout << msg;
    return cin.get();
}
size_t get_size(const char* msg, const size_t max_length = 20, const size_t min_length = 1) {
    size_t size;
    do {
        cout << msg;
        cin >> size;
    } while (size < min_length || size > max_length);
    return size;
}
int main() {
    const auto n = get_size("n: ");
    auto words = lines(n);
    system("cls");
    print(words);
    del_front(words);
    print(words);
    const auto mark = get_char("mark: ");
    const auto letter = get_char("letter: ");
    cout.put('\n');
    ins(words, letter, mark);
    print(words);
    system("pause");
}
0
 Аватар для igorrr37
2873 / 2020 / 991
Регистрация: 21.12.2010
Сообщений: 3,740
Записей в блоге: 9
05.05.2018, 13:05
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
#include <iostream>
#include <regex>
#include <string>
#include <vector>
using namespace std::string_literals;
 
 
int main()
{
    std::vector<std::string> vct // вектор строк
    { 
        "cv awa cv",
        "sd swd sd",
        "wagh gh",
        "Jk Jk wa",
        "aa",
        "w",
    };
    char c1 = 'a'; // удалить первое вхождение c1
    char c2 = 'w', c3 = 'Y'; // после c2 вставить c3  
    for (auto& str : vct)
    {
        str = std::regex_replace(str, std::regex{ c1 }, "", std::regex_constants::format_first_only); // удаление
        str = std::regex_replace(str, std::regex{ c2 }, "$&"s + c3); // вставка
        std::cout << str << std::endl;
    }
}
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
05.05.2018, 13:58  [ТС]
Не подскажешь пожалуйста почему у меня не запускается через dev c++ ?
0
 Аватар для igorrr37
2873 / 2020 / 991
Регистрация: 21.12.2010
Сообщений: 3,740
Записей в блоге: 9
05.05.2018, 14:05
старый компилятор? Запусти командную строку и введи
Code
1
g++ --version
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
05.05.2018, 14:08  [ТС]
возможно что старый. Пишет что библиотеки какой то не хватает или не поддерживается файл
0
 Аватар для igorrr37
2873 / 2020 / 991
Регистрация: 21.12.2010
Сообщений: 3,740
Записей в блоге: 9
05.05.2018, 14:12
а что конкретно пишет?
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
05.05.2018, 16:29  [ТС]
ошибка этот файл требует поддержки компилятора и библиотеки для
0
 Аватар для igorrr37
2873 / 2020 / 991
Регистрация: 21.12.2010
Сообщений: 3,740
Записей в блоге: 9
05.05.2018, 18:00
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
#include <iostream>
#include <string>
#include <vector>
 
 
int main()
{
    std::vector<std::string> vct // вектор строк
    {
        "cv awa cvw",
        "sd swd sd",
        "wagh gh",
        "Jk Jk wa",
        "aa",
        "ww",
    };
    char c1 = 'a'; // удалить первое вхождение c1
    char c2 = 'w', c3 = 'Y'; // после c2 вставить c3  
    for (auto& str : vct)
    {
        // удаление
        std::string::size_type ind = str.find(c1);
        if (ind != std::string::npos)
        {
            str.erase(ind, 1);
        }
 
        // вставка
        for (ind = str.find(c2); ind != std::string::npos; ind = str.find(c2, ind + 2))
        {
            str.insert(ind + 1, 1, c3);
        }
        
        std::cout << str << std::endl;
    }
}
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
06.05.2018, 20:28  [ТС]
нет соответствующей функции для вызова ' std:: vector<std:: basic_string<char>:: vector (<список инициализаторов фигурных скобок>)) Не подскажешь как исправить? Просидел часа 2 так и не смог найти причину
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
07.05.2018, 19:53  [ТС]
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
#include <iostream>
#include <string>
#include <vector>
 
 
int main()
{
    std::vector<std::string> vct // вектор строк
    {
        "cv awa cvw",
        "sd swd sd",
        "wagh gh",
        "Jk Jk wa",
        "aa",
        "ww",
    };
    char c1 = 'a'; // удалить первое вхождение c1
    char c2 = 'w', c3 = 'Y'; // после c2 вставить c3  
    for (auto& str : vct)
    {
        // удаление
        std::string::size_type ind = str.find(c1);
        if (ind != std::string::npos)
        {
            str.erase(ind, 1);
        }
 
        // вставка
        for (ind = str.find(c2); ind != std::string::npos; ind = str.find(c2, ind + 2))
        {
            str.insert(ind + 1, 1, c3);
        }
        
        std::cout << str << std::endl;
    }
}
Вот у меня есть код. Но программа не работает через Dev C++. Уже второй день пытаюсь исправить чтобы заработала. Помогите пожалуйста
0
 Аватар для igorrr37
2873 / 2020 / 991
Регистрация: 21.12.2010
Сообщений: 3,740
Записей в блоге: 9
07.05.2018, 20:02
заполни вектор строками через push_back
C++
1
2
std::vector<std::string> vct; // вектор строк
vct.push_back("cv awa cvw");
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
07.05.2018, 20:32  [ТС]
все равно не работает

Добавлено через 2 минуты
может обратиться в раздел СИ? У нас в универе как то в перемешку Си и Си++, но больше Си
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
15.05.2018, 15:23  [ТС]
Всем привет. Помогите пожалуйста сделать задачу. Буду очень благодарен

Разработать программу. Вводится последовательно N строк (1<=N<=20), длина которых не должна превышать 20 символов. Строки должны состоять из заглавных и строчных латинских букв. Выполнить следующие преобразования:
- удалить во всех строках первые вхождения введенного пользователем символа;
- во всех строках добавить после указанного пользователем символа символ, введенный пользователем.
Вывести результаты преобразований.

У меня есть код на c++, но он не работает через dev c++. Надеюсь на вашу помощь)))
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
04.06.2018, 14:22  [ТС]
Всем привет. Помогите пожалуйста переделать программу.
Текст задачи:
Вводится последовательно N строк (1<=N<=20), длина которых не должна превышать 20 символов. Строки должны состоять из заглавных и строчных латинских букв. Выполнить следующие преобразования:
- удалить во всех строках первые вхождения введенного пользователем символа;
- во всех строках добавить после указанного пользователем символа символ, введенный пользователем.
У меня имеется код программы:
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
#include <iostream>
#include <string>
#include <vector>
 
 
int main()
{
    std::vector<std::string> vct // вектор строк
    {
        "cv awa cvw",
        "sd swd sd",
        "wagh gh",
        "Jk Jk wa",
        "aa",
        "ww",
    };
    char c1 = 'a'; // удалить первое вхождение c1
    char c2 = 'w', c3 = 'Y'; // после c2 вставить c3  
    for (auto& str : vct)
    {
        // удаление
        std::string::size_type ind = str.find(c1);
        if (ind != std::string::npos)
        {
            str.erase(ind, 1);
        }
 
        // вставка
        for (ind = str.find(c2); ind != std::string::npos; ind = str.find(c2, ind + 2))
        {
            str.insert(ind + 1, 1, c3);
        }
        
        std::cout << str << std::endl;
    }
}
Помогите пожалуйста разобраться с этим кодом. Буду очень благодарен
Миниатюры
Удалить во всех строках заданного текста первые вхождения введенного пользователем символа  
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
08.06.2018, 18:57  [ТС]
Всем привет. Помогите пожалуйста исправить код программы чтобы работал через dev c++
Вот текст задачи:
Разработать программу. Вводится последовательно N строк (1<=N<=20), длина которых не должна превышать 20 символов. Строки должны состоять из заглавных и строчных латинских букв. Выполнить следующие преобразования:
- удалить во всех строках первые вхождения введенного пользователем символа;

Вот то что у меня есть. Ну ни в какую программа не хочет запускаться

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
#include <iostream>
#include <string>
#include <vector>
 
 
int main()
{
    std::vector<std::string> vct // вектор строк
    {
        "cv awa cvw",
        "sd swd sd",
        "wagh gh",
        "Jk Jk wa",
        "aa",
        "ww",
    };
    char c1 = 'a'; // удалить первое вхождение c1
    char c2 = 'w', c3 = 'Y'; // после c2 вставить c3  
    for (auto& str : vct)
    {
        // удаление
        std::string::size_type ind = str.find(c1);
        if (ind != std::string::npos)
        {
            str.erase(ind, 1);
        }
 
        // вставка
        for (ind = str.find(c2); ind != std::string::npos; ind = str.find(c2, ind + 2))
        {
            str.insert(ind + 1, 1, c3);
        }
        
        std::cout << str << std::endl;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2018, 18:57
Помогаю со студенческими работами здесь

Заменить в четных строках текста все вхождения символа 'a' на 'b', а в нечетных наоборот
Дан текст из нескольких строк. Заменить в четных строках все вхож-дения символа 'a' на 'b', а в нечетных наоборот. Исходные и...

Удалить из строки все вхождения заданного символа
Всем привет) Есть программа, которая не совсем корректно работает. Суть ее в том ,что из консоли мы вводим строку ,затем символ, который...

Удалить из строки все вхождения заданного символа
Здравствуйте, Форумчане! У меня с++ кобенится String ^s3=&quot;.&quot;, ^s4; name-&gt;Replace(s3,s4); String ^s3=&quot;.&quot;, ^s4; ...

Удалить из строки все вхождения заданного символа
12. Преобразовать заданную строку следующим образом: удалить из строки все вхождения заданного символа; Соль в том что это нужно...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru