Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/75: Рейтинг темы: голосов - 75, средняя оценка - 4.91
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375

Что такое лексикографический порядок

02.04.2018, 01:33. Показов 16751. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Меня интересует правильно ли я расположил сейчас буквы русского алфавита в лексикографическом порядке:

А, а, Б, б, В, в, ..., Я, я.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.04.2018, 01:33
Ответы с готовыми решениями:

Лексикографический порядок
в задаче попалась фраза : отсортировать массив в порядке лексографического возрастания не совсемм понимаю как мне надо сравнивать,что...

Лексикографический порядок для строк
Помогите пожалуйста! Буду рад, любым советам(желательно с приведённым кодом), как и любой новичок. Нужно получить такие перестановки строк:...

Что такое порядок инициализации таблицы виртуальных методов?
Что-то я не переварил это.

27
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
02.04.2018, 17:57
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Просто Саша Посмотреть сообщение
Так что выходит нет стандарта на лексикографический порядок?
Моё мнение (скромное, не знатока):
Цитата Сообщение от nd2 Посмотреть сообщение
От локали зависит.
Цитата Сообщение от nd2 Посмотреть сообщение
А как там в алфавите - это в локали прописывается.
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
02.04.2018, 18:09  [ТС]
Да тут не гадать надо, а проверять реально надо.
Вот написал такую программку:

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
auto main(int argc, char * argv[]) -> int
{
    system("chcp 65001") //здесь менять локаль, то есть кодовую страницу консоли;
    system("cls");
    setlocale(LC_ALL, "Russian_Russia.65001"); // и здесь менять локаль, то есть кодовую страницу
    
    extern auto inserion_sort(char const * * const, int const) -> void;
 
    int const ARRSIZE {52};
    char const * strArr[ARRSIZE] {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
    cout << "UNSORTED ARRAY: ";
    for (auto elem : strArr)
        cout << elem;
    cout << endl;
 
    inserion_sort(strArr, ARRSIZE);
 
    cout << "  SORTED ARRAY: ";
    for (auto elem : strArr)
        cout << elem;
    cout << endl;
 
    system("pause");
    return EXIT_SUCCESS;
}
 
 
auto inserion_sort(char const ** const array, int const arrSize) -> void
{
    for (int ind {1}; ind < arrSize; ++ind)
    {
        int insertPos {ind};
        char const * insertElem {array[ind]};
 
        while (insertPos > 0 && strcoll(array[insertPos - 1], insertElem) > 0) //здесь менять strcoll на strcmp
            array[insertPos] = array[insertPos - 1], --insertPos;
        array[insertPos] = insertElem;
    }
}
И пока выяснил следующее. Тут и с английским алфавитом не все так просто:

Бинарный порядок английского алфавита во всех кодировках выглядит следующим образом:
A, B, C,…,Z, a, b, c,…z.
Лексикографический порядок английского алфавита во всех однобайтовых кодировках выглядит следующим образом: a, A, b, B, c, C,…, z, Z, а Юникоде вот такой: A, B, C,…Z, a, b,c,…,z, то есть совпадает с бинарным.

Сейчас обработаю схожим образом русский язык.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
02.04.2018, 18:19
Цитата Сообщение от Просто Саша Посмотреть сообщение
а проверять реально надо.
Проверяй. В результате выяснишь, что везде всё по-разному, и на этом успокоишься.
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
02.04.2018, 19:09  [ТС]
Бинарный порядок русского алфавита в кодировке 1251 выглядит следующим образом: Ё, ё, А, Б, В,…,Я, а, б, в,…,я.

Лексикографический порядок русского алфавита в кодировке 1251 выглядит следующим образом: а, А, б, Б, в, В,…,я, Я.

Бинарный порядок русского алфавита в кодировке 866 выглядит следующим образом: А, Б, В,…,Я, а, б, в,…,я, Ё, ё.

Лексикографический порядок русского алфавита в кодировке 866 выглядит следующим образом: а, А, б, Б, в, В,…,я, Я.

Бинарный порядок русского алфавита в кодировке koi8-r выглядит следующим образом: ёЁюабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕ ФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ.

Лексикографический порядок русского алфавита в кодировке koi8-r выглядит следующим образом: а, А, б, Б, в, В,…,я, Я.

А вот с Юникодом для русского алфавита пока проблемы. Не выводит текст на экран.

Добавлено через 11 минут
И Юникод добил:

Бинарный порядок русского алфавита в кодировке Юникод выглядит следующим образом:
ЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеж зийклмнопрстуфхцчшщъыьэюяё.

Лексикографический порядок русского алфавита в кодировке Юникод выглядит следующим образом: а, А, б, Б, в, В,…,я, Я.

Добавлено через 1 минуту
Как всегда, буква Ё портит всю картину.
Отсюда вывод. При работе с русским языком нужно использовать функцию strcoll.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
02.04.2018, 19:22
Цитата Сообщение от Просто Саша Посмотреть сообщение
Лексикографический порядок русского алфавита в кодировке 866 выглядит следующим образом: а, А, б, Б, в, В,…,я, Я.
Тогда почему этот код выводит 1?
C++
1
2
3
char* p = setlocale(LC_ALL, "rus_rus.866");
if (p)
    cout << strcoll("д", "Д") << endl; // 1, что означает "д" > "Д"
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
02.04.2018, 19:39  [ТС]
Итак, мы видим, что во всех кодировках лексикографический порядок русского алфавита один и тот же и совпадает с естетсвенным расположением букв в алфавите, при этом каждая строчная буква меньше соответствующей прописной.
ЭТО СПРАВЕДЛИВО ДЛЯ ВСЕХ КОДИРОВОК.

А вот что здесь может вызвать некоторое недоразумение так это то, всякий раз при изменении кодировки в программе, надо также не забывать менять СООТВЕТСТВУЮЩУЮ КОДИРОВКУ ФАЙЛА ПРОГРАММЫ, тогда не будет вот таких возражений, что мол в одной кодировке так, а в другой по другому.

Цитата Сообщение от nd2 Посмотреть сообщение
Проверяй. В результате выяснишь, что везде всё по-разному, и на этом успокоишься.
Да проверил и успокоился и выяснил, что НЕ ПО РАЗНОМУ ВЕЗДЕ, А ВЕЗДЕ ОДИНАКОВО, надо только аккуратно действовать, а не тяп-ляп. Вообще кодировка - это вещь достаточно тонкая, а досовская консоль - это прямо скажем не та штука, используя которую можно легко эксперементировать с кодировками.

Добавлено через 56 секунд
Цитата Сообщение от nd2 Посмотреть сообщение
char* p = setlocale(LC_ALL, "rus_rus.866");
if (p)
* * cout << strcoll("д", "Д") << endl; // 1, что означает "д" > "Д"
Уже ответил ниже.
Да ведет он себя так. Но ты поменяй кодировку файла и убедись, что он тогда будет вести себя так, как положено.
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
02.04.2018, 19:41
Удалил.
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
02.04.2018, 19:42  [ТС]
Все настройки у тебя должны быть полностью синхронными.
То есть
1) Кодировка файла.
2) Локаль, которую ты задаешь в программе
3) Кодовая страница консоли.

Вот это все должно быть одним и тем же.

Добавлено через 1 минуту
Цитата Сообщение от nd2 Посмотреть сообщение
Какого файла?
Файла исходного кода.
Иди в меню файл и выбери пункт Сохранить.
Затем нажми на стрелочку на кнопке Сохранить и выбери пункт "СОХРАНИТЬ С КОДИРОВКОЙ".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2018, 19:42
Помогаю со студенческими работами здесь

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

Что такое хэндлер файла? Что такое файловый указатель?
Что такое хэндлер файла? Что такое файловый указатель?

Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них пожалуйста.

лексикографический порядок
Натуральные числа от 1 до N упорядочены лексикографически. Например, для N=25 результат этого упорядочения будет таким: 1, 10, 11, 12, 13,...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru