С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
5 / 4 / 1
Регистрация: 25.10.2019
Сообщений: 149
1

Редактирование строки

09.10.2021, 00:36. Показов 1451. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа выполняет редактирования введенного пользователем строки
двумя способами.
Первый способ позволяет удалить лишние пробелы и повторяющиеся
знаки препинания. Лишними следует считать несколько расположенных
подряд пробелов, пробелы между словом и точкой, запятой, знаками
вопросы и знак.
Второй способ позволяет перед лапками вставить в тексте
обратный слэш.
Выбор способа работы зависит от пользователя. предусмотреть
возможность работы с несколькими строками пользователя за один запуск
программы.
Подскажите пожалуйста как обратный слэш впихнуть в строку. Беда еще в том, что у меня нужно, чтоб два способа сразу могли выполниться. Без этого я бы отдельно через cout слэш выводил и дальше строку саму. А так запара, и я не понимаю как мне это толком реализовать. Еще и пробелы. Пробовал их через erase убирать. Если больше двух пробелов, то он только один уберет а остальные оставит.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2021, 00:36
Ответы с готовыми решениями:

Редактирование строки
Здравствуйте, ребят. Не буду вас мучить сегодня. Только один вопрос: У меня есть очень длинная...

Редактирование строки в C++
Не могу понять как правильно добавить символ в конец строки ,вот часть кода , в чем проблема?...

Редактирование строки
Нужно редактировать текстовый файл таким образом: у нас есть определенное кол-во символов,которое...

Редактирование массива строки
Помогите написать функцию которая удалит(или просто не выведет в консоль)одинаковые строки....

Файлы: редактирование определенной строки
как мне сделать редактирования файла? допустим вместо строки 2 которую я ввел рание записать что-то...

6
из племени тумба-юбма
2486 / 1808 / 418
Регистрация: 29.11.2015
Сообщений: 8,775
Записей в блоге: 15
09.10.2021, 00:47 2
Цитата Сообщение от KinjongUn Посмотреть сообщение
Подскажите пожалуйста как обратный слэш впихнуть в строку
возможно так
Кликните здесь для просмотра всего текста
\ escape, управляющая последовательность для следующего символа
\\ печатается обратный слеш
" обозначает начало или конец строки
" печатаются двойные кавычки
' начало или конец символьной константы
\' печатается одинарная кавычка
% начало спецификации формата
\% печатается символ процента
%% также печатается символ процента


Добавлено через 1 минуту
что то не все верно вставляет
Код
\	escape, управляющая последовательность для следующего символа
\\	печатается обратный слеш
"	обозначает начало или конец строки
\"	печатаются двойные кавычки
'	начало или конец символьной константы
\'	печатается одинарная кавычка
%	начало спецификации формата
\%	печатается символ процента
%%	также печатается символ процента
1
5 / 4 / 1
Регистрация: 25.10.2019
Сообщений: 149
10.10.2021, 11:07  [ТС] 3
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
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <algorithm>
#include <cctype>
#include <string>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    string arr;
    char YN1,YN2,YN;
    int a, k = 0, c,s;
    bool f = true, ff = true, fff = true;
    while (f)
    {
        cout << "Введите строку до 1000 символов" << endl;
        getline(cin, arr);
        cout << "Хотите ли вы использовать первый способ сортировки?Y/N" << endl;
        cin >> YN1;
        cout << "Хотите ли вы использовать второй способ сортировки?Y/N" << endl;
        cin >> YN2;
        if (YN1 == 'Y')
        {
            for (int i = 0; i < arr.length(); i++)
            {
                if ((i == 0) && (arr[i] == ' '))
                {
                    arr.erase(i, 1);
                    i--;
                }
                else if ((arr[i] == ' ') && ((arr[i + 1] == ' ') || (arr[i + 1] == '.') || (arr[i + 1] == ',') || (arr[i + 1] == ';') || (arr[i + 1] == ':') || (arr[i + 1] == '!') || (arr[i + 1] == '?')))
                {
                    arr.erase(i, 1);
                    i--;
                }
            }
        }
        if (YN2 == 'Y')
        {
            k = 0;
            ff = true;
            c = 0;
            s = 0;
            while (s == arr.length() + k - 1)
            {
                for (int i = c; i < arr.length() + k; i++)
                {
                    if (arr[i] == '"')
                    {
                        arr.insert(i, 1, '\\');
                        c = i + 1;
                        k++;
                        break;
                    }
                    s++;
                }
 
            }
        }
        cout << arr;
        cout << "Хотите ли вы отредактировать еще одну строку?Y/N" << endl;
        cin >> YN;
        if (YN != 'Y') f = false;
    }
}
Всё работает, кроме обратного слэша
0
из племени тумба-юбма
2486 / 1808 / 418
Регистрация: 29.11.2015
Сообщений: 8,775
Записей в блоге: 15
10.10.2021, 12:18 4
я же вам расклад весь написал, а вы опять все то же
C++
1
2
3
4
5
char a = '\"';
cout << a << "test string" << a << endl;
 
if(a=='\"') a = '\\';
cout << a << "test string" << a << endl;
Код
"test string"
\test string\

--------------------------------
Process exited after 0.01666 seconds with return value 0
Для продолжения нажмите любую клавишу . . .
1
5 / 4 / 1
Регистрация: 25.10.2019
Сообщений: 149
10.10.2021, 19:18  [ТС] 5
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <algorithm>
#include <cctype>
#include <string>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    string arr;
    char YN1,YN2,YN;
    bool f = true, ff = true, fff = true;
    while (f)
    {
        cout << "Введите строку" << endl;
        getline(cin, arr);
        cout << "Хотите ли вы использовать первый способ сортировки?Y/N" << endl;
        cin >> YN1;
        cout << "Хотите ли вы использовать второй способ сортировки?Y/N" << endl;
        cin >> YN2;
        while (ff)
        {
            if (YN1 == 'Y')
            {
                for (int i = 0; i < arr.length(); i++)
                {
                    if ((i == 0) && (arr[i] == ' '))
                    {
                        arr.erase(i, 1);
                        i--;
                    }
                    else if ((arr[i] == ' ') && ((arr[i + 1] == ' ') || (arr[i + 1] == '.') || (arr[i + 1] == ',') || (arr[i + 1] == ';') || (arr[i + 1] == ':') || (arr[i + 1] == '!') || (arr[i + 1] == '?')))
                    {
                        arr.erase(i, 1);
                        i--;
                    }
                }
                ff = false;
            }
            else if (YN1 == 'N')
            {
                ff = false;
            }
            else cout << "Вы ввели неправильные данные, повторите попытку" << endl;
        }
        while(fff)
        {
            if (YN2 == 'Y')
            {
                for (int i = 0; i < arr.length(); i++)
                {
                    if ((arr[i] == '"') || (arr[i] == '\''))
                    {
                        cout << '\\' << arr[i];
                    }
                    else cout << arr[i];
                }
                cout << endl;
                fff = false;
            }
            else if (YN1 == 'N')
            {
                fff = false;
                cout << arr << endl;
            }
            else cout << "Вы ввели неправильные данные, повторите попытку" << endl;
        }
        cout << "Хотите ли вы отредактировать еще одну строку?Y/N" << endl;
        cin >> YN;
        if (YN != 'Y') f = false;
    }
}
Прям как надо работает, спасибо, мама Стифлера,
0
5 / 4 / 1
Регистрация: 25.10.2019
Сообщений: 149
18.10.2021, 14:55  [ТС] 6
мама Стифлера, Блин, я у себя баг нашел. Когда я хочу повторить действие со строкой, он не хочет ее прочитывать, потому что там уже записана строка. Как мне прочитать новую строку, не создавая новую переменную, подскажите пожалуйста

Добавлено через 21 секунду
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <algorithm>
#include <cctype>
#include <string>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    string arr;
    char YN1,YN2,YN;
    bool f = true, ff, fff, ffff, fffff;
    while (f)
    {
        ff = true;
        fff = true;
        ffff = true;
        fffff = true;
        while (fffff)
        {
            cout << "Введите строку" << endl;
            getline(cin, arr);
            fffff = false;
        }
        while (ff)
        {
            cout << "Хотите ли вы использовать первый способ сортировки?Y/N" << endl;
            cin >> YN1;
            if (YN1 == 'Y')
            {
                for (int i = 0; i < arr.length(); i++)
                {
                    if ((i == 0) && (arr[i] == ' '))
                    {
                        arr.erase(i, 1);
                        i--;
                    }
                    else if ((arr[i] == ' ') && ((arr[i + 1] == ' ') || (arr[i + 1] == '.') || (arr[i + 1] == ',') || (arr[i + 1] == ';') || (arr[i + 1] == ':') || (arr[i + 1] == '!') || (arr[i + 1] == '?')))
                    {
                        arr.erase(i, 1);
                        i--;
                    }
                }
                ff = false;
            }
            else if (YN1 == 'N')
            {
                ff = false;
            }
            else cout << "Вы ввели некорректный символ, попробуйте еще раз" << endl;
        }
        while(fff)
        {
            cout << "Хотите ли вы использовать второй способ сортировки?Y/N" << endl;
            cin >> YN2;
            if (YN2 == 'Y')
            {
                for (int i = 0; i < arr.length(); i++)
                {
                    if ((arr[i] == '"') || (arr[i] == '\''))
                    {
                        cout << '\\' << arr[i];
                    }
                    else cout << arr[i];
                }
                cout << endl;
                fff = false;
            }
            else if (YN2 == 'N')
            {
                fff = false;
                cout << arr << endl;
            }
            else cout << "Вы ввели некорректный символ, попробуйте еще раз" << endl;
        }
        while (ffff)
        {
            cout << "Хотите ли вы отредактировать еще одну строку?Y/N" << endl;
            cin >> YN;
            if (YN == 'N') {
                ffff = false;
                f = false;
            }
            else if (YN == 'Y')
            {
                ffff = false;
            } else cout << "Вы ввели некорректный символ, попробуйте еще раз" << endl;
        }
        arr.clear();
    }
}
Добавлено через 45 минут
Я разобрался. cin.ignore() надо было написать
0
из племени тумба-юбма
2486 / 1808 / 418
Регистрация: 29.11.2015
Сообщений: 8,775
Записей в блоге: 15
18.10.2021, 15:09 7
Лучший ответ Сообщение было отмечено KinjongUn как решение

Решение

KinjongUn, рад за вас.
Сам я не очень знаю С++ поэтому, не уверен смог бы вам помочь, или нет.

Добавлено через 9 минут
KinjongUn, во всех условиях типа if (YN == 'N') желательно еще добавить маленькую буку
C++
1
if (YN == 'N' || YN == 'n')
1
18.10.2021, 15:09
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2021, 15:09
Помогаю со студенческими работами здесь

Удаление и редактирование определённой строки
Задание- словарь синонимов, в нём нужно осуществить удаление и редактирование определённой строки в...

Редактирование строки. В строку дозаписывается мусор
Есть программа, которая заменяет в строке &quot;ph&quot; на &quot;f&quot;, а &quot;ed&quot; на &quot;ing&quot;. Программа работает. Но...

Работа с файлами. Редактирование только 1 строки
Добрый день как можно редактировать только 1 строку? Есть функция: const char *...

Запрет редактирование строки
Есть DBGridEh. Можно ли запретить редактирование какой-либо строки? Есть свойство ReadOnly но оно...

Добавление, редактирование и удаление строки в БД
Не могу осуществить данные процедуры - удаление,редактирование,добавление. В builder C++ новичок. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru