-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375

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

02.04.2018, 01:33. Показов 17034. Ответов 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,430
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,430
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,430
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,430
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru