-
Добрый день.
Подскажите, насколько хорошо или плохо использовать признаки делимости для контроля ввода? Например, возьмем делитель 7: если введенное число делится на 7 без остатка, значит ввод корректен.
Из малых делителей интерес вызывают 7 и 11 (на 3 не контролирует "перепутывание" двух соседних цифр, остальные затрагивают только последние цифры).
P.S. Я знаю про другие способы контролировать ввод, сейчас я хочу рассмотреть именно этот способ. Спасибо.
-
> если введенное число делится на 7 без остатка, значит ввод > корректен.
если введенное число делится на 7 без остатка, значит ввели число, которое делится на 7 без остатка. причем тут корректность ввода?
-
В стародавние времена MS использовала делимость на 7 для контроля серийника в виндовс.
-
на две минуты хорошо, на на один мангуст плохо.
точнее может сказать только тот у кого десятый дан по русскому. или на крайняк мастер спорта русского языка.
-
> [0] DayGaykin © (15.12.16 13:02) > Подскажите, насколько хорошо или плохо использовать признаки > делимости для контроля ввода?
Наверное правильнее спросить - какова вероятность ошибки при вводе строки длинной n символов из алфавита m символов, если для её контроля используется один дополнительный символ, такой что получившаяся строка делится нацело на 7dec.
-
Ага. Сразу дополнительные условия возникают насчёт возможных ошибок, ошибки же не просто случайно распределены.
-
> Inovet © (15.12.16 15:13) [5] >
Основные ошибки: - Ввод лишней цифры - Перепутали местами две соседние цифры - Одну цифру ввели неверно
Признак делимости на 11 удовлетворяет всем пунктам кроме первого. На 7, первому и третьему частично, второму - не знаю.
-
Для контроля ввода используют контрольные знаки. В частности, номера авиабилетов в качестве контрольного знака используют отстаток от деления на 7 :)
-
> [6] DayGaykin © (15.12.16 15:20)
Если только с цифрами, то ещё от клавиатуры зависит. Три типовых клавиатуры - основная компьютерная, цифровое поле на компьютерной телефонная. Надо добавить - промахнулись и попали по соседней клавише. - набили на цифровой компьютерной, как на телефонной, или наоборот. Насчёт лишней цифры. Максимальное вводимое число есть или любое может быть? Вообще для упрощения можно посчитать вероятность обнаружения (так лучше - обнаружения) ошибки ввода исходя из случайного шума. Там разве не 1-1/7 получится? Т.е. как-то слабовато.
-
> [8] Inovet © (15.12.16 15:38) > 1-1/7
Не, в смысле - каждая десятая комбинация будет распознана как правильная, т.е. 1-1/10.
-
Подскажите, верно ли я понял задачу:
1) Есть некие длинные числа (по большому счету - просто последовательность цифр, некий уникальный ID), которые мы генерируем. Сами числа мы даже сохраняем в какой-то базе (реестре).
2) Есть необходимость ручного ввода этих последовательностей цифр.
Вопрос: Каким образом можно обеспечить простой и лёгкий (вычислительно) способ, который бы позволил достаточно точно убедиться, что во введенном пользователе числе нет опечаток, не сверяясь с базой сгенерированных нами чисел? Можно ли для этого использовать признаки делимости?
-
> KSergey © (16.12.16 08:19) [10]
Спасибо, именно так!
-
-
> [12] kilkennycat © (16.12.16 09:58) > а как кредитные карты не проще?
Так в нулевом посте сказано, что надо именно делемостью на 7 или на 11. Мне вот тоже непонятно, чем такое ограничение вызвано.
-
> Inovet © (16.12.16 10:51) [13]
Если брать до десятки, то остальные представляют мало интереса: модули 2, 4, 5, 8, 10 - контролируют только последнюю или последние цифры. модули 3, 6, 9 - не контролируют перестановку соседних цифр (по признаку делимости).
Все что больше 10ки увеличит "расход" идентификаторов. 11 в виде исключения.
-
> Игорь Шевченко © (15.12.16 15:36) [7] > Для контроля ввода используют контрольные знаки. В частности, > номера авиабилетов в качестве контрольного знака используют > отстаток от деления на 7 :)
Не могу найти информацию об этом. Поделитесь ссылочкой?
-
> Все что больше 10ки увеличит "расход" идентификаторов.
хм...
-
-
> [14] DayGaykin © (16.12.16 11:03) > модули 2, 4, 5, 8, 10 - контролируют только последнюю или > последние цифры. > модули 3, 6, 9 - не контролируют перестановку соседних цифр > (по признаку делимости). > > Все что больше 10ки увеличит "расход" идентификаторов. 11 > в виде исключения.
Ну так надо бы простые числа при таком подходе. Вообще-то раззориться на ещё одну контрольную цифру, связать все вместе, и всё будет лучше. Например, расзличные штрихкоды, СНИЛС, ИНН, и т.п. https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE#.D0.A1.D1.82.D1.80.D0.B0.D1.85.D0.BE.D0.B2.D0.BE.D0.B9_.D0.BD.D0.BE.D0.BC.D0. B5.D1.80_.D0.B8.D0.BD.D0.B4.D0.B8.D0.B2.D0.B8.D0.B4.D1.83.D0.B0.D0.BB.D1.8C.D0.B D.D0.BE.D0.B3.D0.BE_.D0.BB.D0.B8.D1.86.D0.B5.D0.B2.D0.BE.D0.B3.D0.BE_.D1.81.D1.8 7.D1.91.D1.82.D0.B0_.28.D0.A0.D0.BE.D1.81.D1.81.D0.B8.D1.8F.29
|