Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Erebus 1
40 / 14 / 6
Регистрация: 28.10.2019
Сообщений: 239

Обработка закрывающихся и открывающихся кавычек

10.06.2021, 16:41. Показов 1840. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет
Нужно реализовать смену ковычек "" на «», как это можно сделать, с учетом того что ковычки в тексте могут не содержать в себе текста, содержать одно слово в ковычках, два (например: "О карикатуре на марксизм и об "империалистическом экономизме") и три. Какими средствами это можно сделать, с учетом того что какой-то закономернности нет?
В следствии того что закономерности нет, не удается написать адекватную функцию для всех случаев перечисленных выше

Приму любые советы. Всем заранее спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2021, 16:41
Ответы с готовыми решениями:

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

Проверка числа открывающихся и закрывающихся скобок
Нужно написать функцию, которая проверяет правильность расположения скобок в строке. Если открывающимся скобкам соответствует столько-же...

Проверить баланс открывающихся и закрывающихся скобок
Составить подпрограмму, определяющую, есть ли в заданном., тексте баланс открывающихся и закрывающихся скобок. Используя ее, определить...

13
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
10.06.2021, 16:47
Цитата Сообщение от Erebus 1 Посмотреть сообщение
"О карикатуре на марксизм и об "империалистическом экономизме"
Кавычки должны быть парными всегда. Иначе как мне понять в вашем примере, какая будет начальная, а какая конечная?
0
 Аватар для Erebus 1
40 / 14 / 6
Регистрация: 28.10.2019
Сообщений: 239
10.06.2021, 16:51  [ТС]
мама Стифлера, кавычки должны быть парными в случае если это допускают правила русского языка. Если бы они были бы парными, мне было бы самому проще. Но увы это считается неправильным по правилам
Кликните здесь для просмотра всего текста
https://rus.stackexchange.com/questions/40766/%d0%94%d0%b2%d0%be%d0%b9%d0%bd%d1%8b%d0% b5-%d0%ba%d0%b0%d0%b2%d1%8b%d1%87%d0%ba%d0% b8-%d0%ba%d0%b0%d0%b2%d1%8b%d1%87%d0%ba%d0% b8-%d0%b2-%d0%ba%d0%b0%d0%b2%d1%8b%d1%87%d0%ba%d0% b0%d1%85#:~:text=%D1%80%D1%83%20%D0%BA%D 0%B0%D0%BA%2D%D1%82%D0%BE%20%D0%B4%D0%B0 %D0%B2%D0%BD%D0%BE%20%D0%BE%D0%B1%D1%8A% D1%8F%D1%81%D0%BD%D1%8F%D0%BB%D0%B0,%D0% B8%D0%BB%D0%B8%20%E2%80%93%20%D0%B2%20%D 1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0%D1%85 %2C%20%D0%BD%D0%B0%D0%B1%D1%80%D0%B0%D0% BD%D0%BD%D1%8B%D1%85%20%D0%BD%D0%B0
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
10.06.2021, 17:00
Erebus 1, в таком случае совсем непонятно как их заменять.
0
 Аватар для Erebus 1
40 / 14 / 6
Регистрация: 28.10.2019
Сообщений: 239
10.06.2021, 17:04  [ТС]
мама Стифлера, а как вы бы заменили обычные парные?
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
10.06.2021, 17:53
Цитата Сообщение от Erebus 1 Посмотреть сообщение
а как вы бы заменили обычные парные?
без понятия... ведь парные тоже могут быть как вложенные
<<слово1 <<слово2>> слово3>>
так и не вложенные
<<слово1>>слово2 <<слово3>>
поэтому когда идет речь обычных кавычках, не понятно как их определять
"слово1" слово2 "слово3"
Но можно условно придумать для себя правило - допустим если за кавычкой идет сразу впритык слово(без пробела), значит такая кавычка должна быть всегда открывающей. А если стоит сразу в конце слова, или знака(без пробела) - она должна быть закрывающей.
Вот как то так.
1
 Аватар для Erebus 1
40 / 14 / 6
Регистрация: 28.10.2019
Сообщений: 239
10.06.2021, 20:38  [ТС]
Может ещё кто-нибудь реализовывал данную штуку?
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
11.06.2021, 12:27
Erebus 1, считаю предложенное решение лучшим, так как оно поддается закономерности.
Программный код - это алгоритм - четкий порядок выполнения действий по инструкциям, при разных условиях. Если вы не знаете порядок действий, значит вы не составите алгоритм. Вот к примеру в таком случае:
" слово1 " слово2 " слово3 "
мне будет совсем не понятно, какие из кавычек заменять на открывающие, а какие на закрывающие.
Но если исходный текс будет написан по правилам:
"слово1 "слово2" слово3"
то мне сразу понятно, на какие кавычки заменить парные кавычки.
1
 Аватар для Erebus 1
40 / 14 / 6
Регистрация: 28.10.2019
Сообщений: 239
11.06.2021, 12:35  [ТС]
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Программный код - это алгоритм - четкий порядок выполнения действий по инструкциям, при разных условиях.
Заказчик - это деньги - то что просит заказчик, то делает программист. Заказчику требуется чтобы в документах данные оформлялись в соответствии со всеми правилами русского языка, в том числе правил расставления ковычек.

Добавлено через 40 секунд
Посмотрел, вроде можно как-то с помощью регулярных выражений сейчас разбираюсь

Добавлено через 2 минуты
У вас может быть строка "ФГБОУ ВО "МГТУ "БАУМАНКА", надо обратабывать именно так, а не "ФГБОУ ВО "МГТУ "БАУМАНКА"""
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
11.06.2021, 12:45
Цитата Сообщение от Erebus 1 Посмотреть сообщение
У вас может быть строка "ФГБОУ ВО "МГТУ "БАУМАНКА"
Ну так и обрабатывайте эту строку, по правилам которые предложил я, строка легко поддается обработке:
<<ФГБОУ ВО <<МГТУ <<БАУМАНКА>>
0
 Аватар для Erebus 1
40 / 14 / 6
Регистрация: 28.10.2019
Сообщений: 239
11.06.2021, 12:54  [ТС]
Удалось написать, получилось что-то примерно следующее:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
QString Manager::changeQuotes(const QString &str)
{
    QString resultStr;
    for (int i = 0; i < str.size(); ++i) {
        if (str.at(i) == "\"" && i + 1 != str.size())
            str.at(i + 1).isLower() || str.at(i + 1).isUpper() ?
                        resultStr += "«" : resultStr += "»";
        else {
            if (str.at(i) == "\"") {
                resultStr += "»";
                continue;
            }
            resultStr.push_back(str.at(i));
        }
    }
 
    return resultStr;
}
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
11.06.2021, 13:42
Лучший ответ Сообщение было отмечено Erebus 1 как решение

Решение

я плохо знаю язык С++, включая его функции и операторы. На обычном Си, код выглядел бы как то так:
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
#include <stdio.h>
#include <windows.h>
#define N 256
 
void function(char* a) 
{
    int i=0;
    while(a[i] != '\0' && a[i] != '\n')
    {
        if((a[i] == 34) && (a[i+1] != ' ' && a[i+1] != '\0' && a[i+1] != '\n'))
            a[i] = 171;
 
        if((a[i] == 34) && (a[i+1] == ' ' || a[i+1] == '\0' || a[i+1] == '\n'))
            a[i] = 187;
        i++;
    }
}
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char a[N];
    printf("Enter string(0-255):\n");
    fgets(a, N, stdin);
    function(a);
    printf("Result string:\n%s", a);    
    return 0;
}
Кликните здесь для просмотра всего текста

Enter string(0-255):
"ФГБОУ ВО "МГТУ "БАУМАНКА"
Result string:
«ФГБОУ ВО «МГТУ «БАУМАНКА»

--------------------------------
Process exited after 2.213 seconds with return value 0
Для продолжения нажмите любую клавишу . . .
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
11.06.2021, 14:16
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Кавычки должны быть парными всегда.
По правилам русского языка не должны.
Повторяться могут быть кавычки разного рисунка (например " и »), кавычки одного рисунка подряд идти не могут
Т.е.
"О карикатуре на марксизм и об "империалистическом экономизме" - правильно.
"О карикатуре на марксизм и об "империалистическом экономизме"" - неправильно.
«О карикатуре на марксизм и об "империалистическом экономизме"» - правильно.
1
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
11.06.2021, 14:30
DrOffset, я уже это понял
Erebus 1, на случай, если после кавычки будет сразу будет стоять знак пунктуации, добавил в функцию еще 1 условие. В итоге получилась такая функция:
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void function(char* a) 
{
    int i=0;
    while(a[i] != '\0' && a[i] != '\n')
    {
        if((a[i] == 34) && (a[i+1] != ' ' && a[i+1] != '\0' && a[i+1] != '\n'))
            a[i] = 171;
        else if((a[i] == 34) && (a[i+1] == ' ' || a[i+1] == '\0' || a[i+1] == '\n'))
            a[i] = 187;
        else if((a[i] != ' ') && (a[i+1] == 34))
            a[i+1] = 187;
        i++;
    }
}

Code
1
2
3
4
5
6
7
8
Enter string(0-255):
"ФГБОУ ВО "МГТУ "БАУМАНКА",
Result string:
«ФГБОУ ВО «МГТУ «БАУМАНКА»,
 
--------------------------------
Process exited after 2.681 seconds with return value 0
Для продолжения нажмите любую клавишу . . .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2021, 14:30
Помогаю со студенческими работами здесь

Проверить баланс открывающихся и закрывающихся скобок
первести код паскаля на c++ uses Crt; var i,ok: integer; s: string; b: boolean; BEGIN clrscr; writeln('S...

Проверить, соблюдается ли равенство открывающихся и закрывающихся скобок
Всем добрый день) вот такая задача привела меня в ступор: &quot;Проверить, соблюдается ли равен¬ство открывающихся и закрывающихся...

Проверить, соблюдается ли равенство открывающихся и закрывающихся скобок
В качестве исходного предложения задать арифметическое выражение, записанное на языке С++ :y = exp(pow ((log(abs(sin (x)))), 1.0/3)/(a +...

Ввести строку символов и найти баланс открывающихся и закрывающихся скобок
ввести строку символов и найти баланс открывающихся и закрывающихся скобок

Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке
3. Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке...кто-нибудь знает прогу???


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru