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

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

12.04.2018, 20:45. Показов 2720. Ответов 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
2882 / 2029 / 992
Регистрация: 21.12.2010
Сообщений: 3,782
Записей в блоге: 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
2882 / 2029 / 992
Регистрация: 21.12.2010
Сообщений: 3,782
Записей в блоге: 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
2882 / 2029 / 992
Регистрация: 21.12.2010
Сообщений: 3,782
Записей в блоге: 9
05.05.2018, 14:12
а что конкретно пишет?
0
0 / 0 / 0
Регистрация: 24.02.2017
Сообщений: 160
05.05.2018, 16:29  [ТС]
ошибка этот файл требует поддержки компилятора и библиотеки для
0
 Аватар для igorrr37
2882 / 2029 / 992
Регистрация: 21.12.2010
Сообщений: 3,782
Записей в блоге: 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
2882 / 2029 / 992
Регистрация: 21.12.2010
Сообщений: 3,782
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru