Форум программистов, компьютерный форум CyberForum.ru

Как отличить российские символы от украинских - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Iaroslav_sm
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 3
09.02.2010, 20:31     Как отличить российские символы от украинских #1
Всем доброго вечера.

Задача: пишу программу, которая реализует шифрование символов методом Цезаря, при этом должны поддерживаться английский, российский и украинский алфавиты одновременно.
Суть в том, что я не знаю как отличить российские символы от украинских; например, пользователь ввел такую строку: "абвабв" - первые три символа были введены на украинском, следующие три - на российском. Вопрос: как их отличить? Ведь АSCII-коды у них одинаковы (по уникальным буквам "Ы", "Ї" и т.д. не получится - смотрите выше указанную строку).

Предположим ключ сдвига равен 4. Если эту строку кодировать по российскому алфавиту, то получим сочитание "деёдеё", по украинскому - "ґдеґде".

А ведь нужно получить "ґдедеё". В этом и проблема.

Приношу извинения если такая тема уже где-то есть - не нашел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2010, 20:31     Как отличить российские символы от украинских
Посмотрите здесь:

C++ Не получается чтобы он все символы с текста читал и типа счетчика который считает одинаковые символы как один и плюсует их....Как сделать правильно???
C++ помогите отличить разыменование от указателя
Отличить целое от числа с плавающей точкой в 32-разрядном регистре C++
Как использовать символы из русского алфавита, а так же символы типа "█" "░" и т.д.? C++
C++ Если в A есть символы из B и в B нет повторяющихся символов, то упорядочить символы B в порядке, обратном к алфавитном
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insideone
Модератор
Автор FAQ
 Аватар для insideone
3619 / 897 / 47
Регистрация: 10.01.2010
Сообщений: 2,420
09.02.2010, 20:35     Как отличить российские символы от украинских #2
Шифруются как я понимаю данные а не буквы. Если невозможно определить как по значению отличаются символы то нельзя их вообще различать. Возможно вам придется создавать свой массив символов с уникальным индексом и API оси проверять какая раскладка и записывать номер из своего массива в разлии от неё.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
09.02.2010, 20:38     Как отличить российские символы от украинских #3
Цитата Сообщение от Iaroslav_sm Посмотреть сообщение
Всем доброго вечера.

Задача: пишу программу, которая реализует шифрование символов методом Цезаря, при этом должны поддерживаться английский, российский и украинский алфавиты одновременно.
Суть в том, что я не знаю как отличить российские символы от украинских; например, пользователь ввел такую строку: "абвабв" - первые три символа были введены на украинском, следующие три - на российском. Вопрос: как их отличить? Ведь АSCII-коды у них одинаковы (по уникальным буквам "Ы", "Ї" и т.д. не получится - смотрите выше указанную строку).
объединить все три алфавита в один и шифровать. в крайнем случае определить русско-украинский алфавит (взять русский за основу, т.к. в нем больше букафф, и добавить і,є,ґ).

Добавлено через 37 секунд
Цитата Сообщение от insideone Посмотреть сообщение
Шифруются как я понимаю данные а не буквы. Если невозможно определить как по значению отличаются символы то нельзя их вообще различать. Возможно вам придется создавать свой массив символов с уникальным индексом и API оси проверять какая раскладка и записывать номер из своего массива в разлии от неё.
метод цезаря - буква заменяется порядковым номером в алфавите (кажется)
Iaroslav_sm
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 3
09.02.2010, 21:11  [ТС]     Как отличить российские символы от украинских #4
Цитата Сообщение от novi4ok Посмотреть сообщение
объединить все три алфавита в один и шифровать.
Хотел, но по заданию нельзя.

Цитата Сообщение от insideone Посмотреть сообщение
создавать свой массив символов с уникальным индексом и API оси проверять какая раскладка
А если текст огромный и раскладка переключалась много раз? Я это уже пробовал, но видать криво, у меня по последнему состоянию раскладки клавиатуры проводилось кодирование а не так как надо.

Цитата Сообщение от novi4ok Посмотреть сообщение
метод цезаря - буква заменяется порядковым номером в алфавите (кажется)
Буква заменяется на букву позиция которой равна позиции первой буквы + ключ сдвига.

insideone, совет дельный, в принципе я пытался сделать так:
Вложения
Тип файла: txt программный код.txt (5.2 Кб, 24 просмотров)
insideone
Модератор
Автор FAQ
 Аватар для insideone
3619 / 897 / 47
Регистрация: 10.01.2010
Сообщений: 2,420
09.02.2010, 21:33     Как отличить российские символы от украинских #5
А если текст огромный и раскладка переключалась много раз? Я это уже пробовал, но видать криво, у меня по последнему состоянию раскладки клавиатуры проводилось кодирование а не так как надо.
Даже не знаю что сказать. Суть в том что входящие данные для системы при а русской и украинской одинаковы то тут ничего не поделаешь. Единственное что могу придумать это сделать какую то прослойку позволяющую считывать по 1 символу и можно будет узнать текущую раскладку. Или проводить анализ по тексту что будет трудно и все равно ошибки будут.

Насчет ввода: Допустим 1 раз в 500мс система открывается для чтения. В это время можно ввести символ и узнается раскладка. Если не успели - тыкать ещё. Будет не очень красиво по отношению к тому кто вводит но все же.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
09.02.2010, 21:41     Как отличить российские символы от украинских #6
Как отличить российские символы от украинских?
Так что в Украине есть клавиатуры с украинским набором?
Если есть, то что ниже можно не читать.

Я вообще не пойму как появилась буква i в украинском языке.
То есть пишешь на кириллице, раз встретилась i и на английскую раскладку переходить надо,
это как то не очень, раскладками тыкать.
Iaroslav_sm
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 3
09.02.2010, 22:02  [ТС]     Как отличить российские символы от украинских #7
Посмотрим, буду по всякому пробовать, как только продвинусь - отпишусь.

Добавлено через 17 минут
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Как отличить российские символы от украинских?
Так что в Украине есть клавиатуры с украинским набором?
Если есть, то что ниже можно не читать.

Я вообще не пойму как появилась буква i в украинском языке.
То есть пишешь на кириллице, раз встретилась i и на английскую раскладку переходить надо,
это как то не очень, раскладками тыкать.

Уважаемый, не передергивайте. Есть четко поставленное преподавателем задание, точка.
Кодируемый текст может состоять из трех языков + спецсимволы и цифры. Анализируем каждый символ на принадлежность к конкретному алфавиту, далее кодируем его (символ) согласно этого алфавита по указанному ключу.

Флуд: "І" - это "Ы" в режиме украинской ракладки. Ничего переключать не надо.
DrMcSheen
 Аватар для DrMcSheen
59 / 59 / 1
Регистрация: 25.05.2009
Сообщений: 521
09.02.2010, 22:09     Как отличить российские символы от украинских #8
Цитата Сообщение от Iaroslav_sm Посмотреть сообщение
пользователь ввел такую строку: "абвабв" - первые три символа были введены на украинском, следующие три - на российском
Да элементарно!
Кладем справа кусок сала, украинские буквы к нему потянутся:
"абвабв" (САЛО)
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
09.02.2010, 22:40     Как отличить российские символы от украинских #9
а если бы задание стояло - для трех алфавитов: английского, немецкого и итальянского, как решал бы?

Добавлено через 5 минут
давай-ка слово в слово условие задачи сюда, попробуем понять. может так что-то иное требуется, или мелочь какая-то, на которую ты внимания не обратил.
DrMcSheen
 Аватар для DrMcSheen
59 / 59 / 1
Регистрация: 25.05.2009
Сообщений: 521
09.02.2010, 22:59     Как отличить российские символы от украинских #10
Шифрование должно вестись "на лету" или нужно обрабатывать полный готовый текст?
если на лету, узнать текущую раскладку нетрудно.
а если уже набранный текст - выбирай любую раскладку, но на весь текст единую.
Цитата Сообщение от Iaroslav_sm Посмотреть сообщение
Ведь АSCII-коды у них одинаковы
и никто не докажет, что ты ошибся. Тем более, что результат декодирования будет верным.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2010, 23:20     Как отличить российские символы от украинских
Еще ссылки по теме:

C++ Как отличить в программе два интерфейса rs422 от rs458?
C++ Отличить целое число от вещественного при считывании из файла
Как отличить буквы от цифр? C++

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

Или воспользуйтесь поиском по форуму:
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
09.02.2010, 23:20     Как отличить российские символы от украинских #11
Цитата Сообщение от DrMcSheen Посмотреть сообщение
Шифрование должно вестись "на лету" или нужно обрабатывать полный готовый текст?
если на лету, узнать текущую раскладку нетрудно.
а если уже набранный текст - выбирай любую раскладку, но на весь текст единую.
и никто не докажет, что ты ошибся. Тем более, что результат декодирования будет верным.
в украинском алфавите, например, пятая буква - "ґ", а в русском - "д" (в украинском "д" - шестая).
если не кодировать "раскладку", то невозможно раскодировать.
например, выберем признак латинского алфавита - 36, русского - 37, украинского - 38, следующего - 39, ...

начинаем кодировать текст по буковкам (не важно из какого потока читаем. первая буква - ascii ?
записали в выходной потом 36 и поехали. едем, пока не встретим букву не из этого набора. имеем три случая: буква типично российская, типично украинская, или общая. в первом случае записали 37 и поехали, во втором - 38, в третьем - по барабану: 37 или 38. и идем пока не встретим букву, выходящую из данного ряда. при расшифровке выглядеть все будут правильно.
Yandex
Объявления
09.02.2010, 23:20     Как отличить российские символы от украинских
Ответ Создать тему
Опции темы

Текущее время: 13:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru