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

Для произвольной строки заменить на РОВ первое вхождение С

05.04.2019, 17:36. Показов 1598. Ответов 11

Студворк — интернет-сервис помощи студентам
Для произвольной строки заменить на РОВ первое вхождение С.
я знаю что подобную тему я уже писала,но оно не походит.
в интернете я ничего подходящего не могу найти.
не могу разобраться, 3 час уже мучаюсь(((((
Помогите,пожалуйста((((((
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2019, 17:36
Ответы с готовыми решениями:

Даны три строки: S1, S2, S3. Заменить в строке S1 первое вхождение строки S2 на S3
Даны три строки: S1, S2, S3. Заменить в строке S1 первое вхождение строки S2 на S3.

Заменить в строке s1 первое вхождение s2 на строку s3
Начал тренироваться в использовании базовых функций работы со строками, и тут же пришло непонимание. Нужно заменить в строке s1 подстроку...

первое вхождение строки
Попытался реализовать первое вхождение строки. Вроде это чудо почти работает, но валится например на тесте text = aaaaaf; pattern = aaaf...

11
35 / 28 / 8
Регистрация: 01.03.2019
Сообщений: 135
05.04.2019, 17:39
Можно увидеть ваш код?
0
2 / 0 / 0
Регистрация: 22.09.2018
Сообщений: 147
05.04.2019, 17:46  [ТС]
ALast,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
 
int main(int argc, char *argv[]) {
    string s;
    string s1;
    cout << endl << "Enter the string:" << endl;
    cin >> s;
 
    size_t offset = s.find("POB");
    if (offset != -1) {
        s.erase(offset, 2);
        s.insert(offset, "C");
        cout << s << endl;
    }
 
    system("PAUSE");
    return 0;
}
а смысл он все равно не подходит. я когда писала дума что буквы латинские а они должны быть русскими
0
35 / 28 / 8
Регистрация: 01.03.2019
Сообщений: 135
05.04.2019, 17:54
Лучший ответ Сообщение было отмечено zxcgf как решение

Решение

Предположу, что правильно так:
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 <string>
#include <iostream>
#include <windows.h>
#include <clocale>
 
int main(int argc, char** argv)
{
    setlocale(LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::string s;
    std::string s1;
    std::cout << std::endl << "Enter the string:" << std::endl;
    std::cin >> s;
 
    size_t offset = s.find("С");
    if (offset != -1) {
        s.erase(offset, 1);
        s.insert(offset, "РОВ");
        std::cout << s << std::endl;
    }
 
    system("pause");
 
    return 0;
}
1
2 / 0 / 0
Регистрация: 22.09.2018
Сообщений: 147
05.04.2019, 18:01  [ТС]
ALast, нет. там должна идти моя строчка например "сегодня ярко светит солнце " и как предполагается что ищется буква "с" и меняется на "ров". а у меня и у вас просто выдается строка .
Миниатюры
Для произвольной строки заменить на РОВ первое вхождение С  
0
35 / 28 / 8
Регистрация: 01.03.2019
Сообщений: 135
05.04.2019, 18:03
zxcgf, ну вы написали мне заглавную C, а не маленькую. Они же различаются. И да, я предположу, что std::cin >> s1 считает одно слово, а не строку.
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
#include <string>
#include <iostream>
#include <windows.h>
#include <clocale>
 
int main(int argc, char** argv)
{
    setlocale(LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::string s;
    std::cout << std::endl << "Enter the string:" << std::endl;
    std::getline(std::cin, s);
 
    size_t offset = s.find("с");
    if (offset != -1) {
        s.erase(offset, 1);
        s.insert(offset, "ров");
        std::cout << s << std::endl;
    }
 
    system("pause");
 
    return 0;
}
0
2 / 0 / 0
Регистрация: 22.09.2018
Сообщений: 147
05.04.2019, 18:06  [ТС]
ALast, Спасибо)Вы мне очень помогли,а в чем все таки я накосячила ?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.04.2019, 18:38
zxcgf, для замены используйте функцию replace (замена). переделайте под русские буквы, для латиницы будет так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using namespace std;
 
int main() 
{
    string s;    
    cout << "String:\n";
    getline(cin, s); // ввод строки
    
    size_t found=s.find('c'); // поиск индекса первого вхождения символа 'с'  
    
    if(found!=string::npos) s.replace(found,1,"pob"); // если символ 'с' в строке найден, меняем его на 'pob'
    
    cout << s << "\n";
 
system("pause");
return 0;
}
Добавлено через 6 минут
p.s. Вроде Вы уже создавали такую тему и я объяснял Вам что тип size_t не принимает отрицательные значения, поэтому сравнивать переменную этого типа с -1 бессмысленно, но видимо напрасно объяснял, если Вы повторяете ошибки как насчёт типа так и усложнения (это не ошибка) кода, применяя две функции вместо одной.
0
2 / 0 / 0
Регистрация: 22.09.2018
Сообщений: 147
05.04.2019, 18:44  [ТС]
Yetty,мне сказали что он не верен. я помню что вы объясняли.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.04.2019, 18:47
Цитата Сообщение от zxcgf Посмотреть сообщение
Yetty,мне сказали что он не верен. я помню что вы объясняли.
тогда слушайте тех кто
Цитата Сообщение от zxcgf Посмотреть сообщение
сказали
ввести любую строку из латинских букв и проверить сами не пробовали ?
0
2 / 0 / 0
Регистрация: 22.09.2018
Сообщений: 147
05.04.2019, 18:51  [ТС]
Yetty,
Цитата Сообщение от Yetty Посмотреть сообщение
ввести любую строку из латинских букв и проверить сами не пробовали ?
пробовала, но мне нужно было на русском
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.04.2019, 19:57
Цитата Сообщение от zxcgf Посмотреть сообщение
мне нужно было на русском
что Вам мешает добавить поддержку русского шрифта в программу ? - выше Вам сообщили как это делать. и заменить в программе латинскую 'c' на русскую и "pob" на "ров". сделайте самостоятельно - Вам же больше пользы будет.

потом почитайте про функцию find , в частности что возвращает эта функция, если искомое значение не найдено
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2019, 19:57
Помогаю со студенческими работами здесь

Даны две строки. Удалить в первой строке первое вхождение второй строки
Посмотрите пж ребят и напишите , правильно ли я написал. int main() { setlocale(LC_ALL, &quot;rus&quot;); ...

В списке Р заменить первое вхождение списка Р1 (если такое есть) на список Р2
Написать программу с функциями, которая: а)в списке Р заменяет первое вхождение списка Р1( если такое есть) на список Р2; б)строит...

Удалить из строки первое вхождение буквосочетание 'not'
Заданная строка S. Превратить S следующим образом: 1) Удалить из S первое вхождение буквосочетание 'not' ; 2) После первого...

Удалить из строки первое вхождение заданной подстроки
Найти ошибки в коде с++ удалить из строки первое вхождение буквосочетание 'while' #include &quot;stdafx.h&quot; ...

Вывести строку исключив первое вхождение второй строки
Хотел решить задачу, где нужно вывести строку, кроме первого входа 2-й строки. Вышло: #include &lt;cstring&gt; #include...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru