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

С++ для начинающих

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

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

09.02.2010, 20:31. Просмотров 1299. Ответов 10
Метки нет (Все метки)

Всем доброго вечера.

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

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

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

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

Как отличить буквы от цифр? - C++
Подразумевается ввод символов, а дальше по обстоятельствам.

Как отличить в программе два интерфейса rs422 от rs458? - C++
Здравствуйте! Подскажите, как отличить в программе два интерфейса rs422 от rs458? Вот код, как я отличаю RS232 от RS422, но в регистре...

Не получается чтобы он все символы с текста читал и типа счетчика который считает одинаковые символы как один и плюсует их....Как сделать правильно??? - C++
#include< stdio.h> #include< conio.h> #include< string.h> #include <iostream> #include <fstream> #include <cmath> using...

Как обрезать эффективно часть строки, составляющую последние символы "/" и следующие за ними символы? - C++
здравствуйте, есть код, обрезающий во входной строке часть составляющую последние символы "/" и следующие за ними символы: std::string...

Как отличить символы? - C#
Хочу чтобы нельзя было вводить более одного символа ")(/*-+" подряд: ввод одинаковых получилось запретить, а вот разных не получается ...

Как пингануть российские сайты с .рф? - Сети
Здравствуйте, как пингануть российские сайты с .рф? Например: ping почта-россии.рф

10
insideone
Модератор
Автор FAQ
3642 / 921 / 50
Регистрация: 10.01.2010
Сообщений: 2,477
09.02.2010, 20:35 #2
Шифруются как я понимаю данные а не буквы. Если невозможно определить как по значению отличаются символы то нельзя их вообще различать. Возможно вам придется создавать свой массив символов с уникальным индексом и API оси проверять какая раскладка и записывать номер из своего массива в разлии от неё.
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
09.02.2010, 20:38 #3
Цитата Сообщение от Iaroslav_sm Посмотреть сообщение
Всем доброго вечера.

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

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

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

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

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

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

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

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

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

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

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

Добавлено через 5 минут
давай-ка слово в слово условие задачи сюда, попробуем понять. может так что-то иное требуется, или мелочь какая-то, на которую ты внимания не обратил.
0
DrMcSheen
60 / 60 / 1
Регистрация: 25.05.2009
Сообщений: 521
09.02.2010, 22:59 #10
Шифрование должно вестись "на лету" или нужно обрабатывать полный готовый текст?
если на лету, узнать текущую раскладку нетрудно.
а если уже набранный текст - выбирай любую раскладку, но на весь текст единую.
Цитата Сообщение от Iaroslav_sm Посмотреть сообщение
Ведь АSCII-коды у них одинаковы
и никто не докажет, что ты ошибся. Тем более, что результат декодирования будет верным.
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
09.02.2010, 23:20 #11
Цитата Сообщение от DrMcSheen Посмотреть сообщение
Шифрование должно вестись "на лету" или нужно обрабатывать полный готовый текст?
если на лету, узнать текущую раскладку нетрудно.
а если уже набранный текст - выбирай любую раскладку, но на весь текст единую.
и никто не докажет, что ты ошибся. Тем более, что результат декодирования будет верным.
в украинском алфавите, например, пятая буква - "ґ", а в русском - "д" (в украинском "д" - шестая).
если не кодировать "раскладку", то невозможно раскодировать.
например, выберем признак латинского алфавита - 36, русского - 37, украинского - 38, следующего - 39, ...

начинаем кодировать текст по буковкам (не важно из какого потока читаем. первая буква - ascii ?
записали в выходной потом 36 и поехали. едем, пока не встретим букву не из этого набора. имеем три случая: буква типично российская, типично украинская, или общая. в первом случае записали 37 и поехали, во втором - 38, в третьем - по барабану: 37 или 38. и идем пока не встретим букву, выходящую из данного ряда. при расшифровке выглядеть все будут правильно.
0
09.02.2010, 23:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2010, 23:20
Привет! Вот еще темы с ответами:

Как отличить программу от человека? - Web-серверы
Здравствуйте! Вопрос: Если на моём сайте сидит программа, которая использует WebBroser, то я могу узнать, что это не человек, получив...

HEX и текст - как отличить - Visual Basic .NET
Всем доброго времени суток! Замучился :-| с, возможно для знатоков, простым вопросом. Одна переменная содержит HEX-код в виде...

Как отличить серый ноутбук - Выбор ноутбука
Как отличить не легально ввезенный ноутбук от легально ввезенного? в данном случаи хотел бы приобрести http://flashcom.ru/market/1681/31125/

Как отличить УРЛ от мусора? - PHP
Обычно в реферерах входящего посетителя присутствует страница, с которой он пришел, но в некоторых случаях вместо неё я вижу какой-то мусор...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru