Конференция "Прочее" » Делмость как контроль ввода.
 
  • DayGaykin © (15.12.16 13:02) [0]
    Добрый день.

    Подскажите, насколько хорошо или плохо использовать признаки делимости для контроля ввода?
    Например, возьмем делитель 7: если введенное число делится на 7 без остатка, значит ввод корректен.

    Из малых делителей интерес вызывают 7 и 11 (на 3 не контролирует "перепутывание" двух соседних цифр, остальные затрагивают только последние цифры).

    P.S. Я знаю про другие способы контролировать ввод, сейчас я хочу рассмотреть именно этот способ. Спасибо.
  • kilkennycat © (15.12.16 13:49) [1]

    > если введенное число делится на 7 без остатка, значит ввод
    > корректен.

    если введенное число делится на 7 без остатка, значит ввели число, которое делится на 7 без остатка. причем тут корректность ввода?
  • Kerk © (15.12.16 14:00) [2]
    В стародавние времена MS использовала делимость на 7 для контроля серийника в виндовс.
  • iop © (15.12.16 14:31) [3]
    на две минуты хорошо, на на один мангуст плохо.

    точнее может сказать только тот у кого десятый дан по русскому. или на крайняк мастер спорта русского языка.
  • Inovet © (15.12.16 15:10) [4]
    > [0] DayGaykin ©   (15.12.16 13:02)
    > Подскажите, насколько хорошо или плохо использовать признаки
    > делимости для контроля ввода?

    Наверное правильнее спросить - какова вероятность ошибки при вводе строки длинной n символов из алфавита m символов, если для её контроля используется один дополнительный символ, такой что получившаяся строка делится нацело на 7dec.
  • Inovet © (15.12.16 15:13) [5]
    Ага. Сразу дополнительные условия возникают насчёт возможных ошибок, ошибки же не просто случайно распределены.
  • DayGaykin © (15.12.16 15:20) [6]

    > Inovet ©   (15.12.16 15:13) [5]
    >

    Основные ошибки:
    - Ввод лишней цифры
    - Перепутали местами две соседние цифры
    - Одну цифру ввели неверно

    Признак делимости на 11 удовлетворяет всем пунктам кроме первого.
    На 7, первому и третьему частично, второму - не знаю.
  • Игорь Шевченко © (15.12.16 15:36) [7]
    Для контроля ввода используют контрольные знаки. В частности, номера авиабилетов в качестве контрольного знака используют отстаток от деления на 7 :)
  • Inovet © (15.12.16 15:38) [8]
    > [6] DayGaykin ©   (15.12.16 15:20)

    Если только с цифрами, то ещё от клавиатуры зависит. Три типовых клавиатуры - основная компьютерная, цифровое поле на компьютерной телефонная. Надо добавить
    - промахнулись и попали по соседней клавише.
    - набили на цифровой компьютерной, как на телефонной, или наоборот.
    Насчёт лишней цифры. Максимальное вводимое число есть или любое может быть?
    Вообще для упрощения можно посчитать вероятность обнаружения (так лучше - обнаружения) ошибки ввода исходя из случайного шума.
    Там разве не 1-1/7 получится? Т.е. как-то слабовато.
  • Inovet © (15.12.16 16:47) [9]
    > [8] Inovet ©   (15.12.16 15:38)
    > 1-1/7

    Не, в смысле - каждая десятая комбинация будет распознана как правильная, т.е. 1-1/10.
  • KSergey © (16.12.16 08:19) [10]
    Подскажите, верно ли я понял задачу:

    1) Есть некие длинные числа (по большому счету - просто последовательность цифр, некий уникальный ID), которые мы генерируем.
    Сами числа мы даже сохраняем в какой-то базе (реестре).

    2) Есть необходимость ручного ввода этих последовательностей цифр.

    Вопрос: Каким образом можно обеспечить простой и лёгкий (вычислительно) способ, который бы позволил достаточно точно убедиться, что во введенном пользователе числе нет опечаток, не сверяясь с базой сгенерированных нами чисел?
    Можно ли для этого использовать признаки делимости?
  • DayGaykin © (16.12.16 09:52) [11]

    > KSergey ©   (16.12.16 08:19) [10]

    Спасибо, именно так!
  • kilkennycat © (16.12.16 09:58) [12]
    а как кредитные карты не проще?
    http://www.internet-law.ru/gosts/gost/60483/
  • Inovet © (16.12.16 10:51) [13]
    > [12] kilkennycat ©   (16.12.16 09:58)
    > а как кредитные карты не проще?

    Так в нулевом посте сказано, что надо именно делемостью на 7 или на 11. Мне вот тоже непонятно, чем такое ограничение вызвано.
  • DayGaykin © (16.12.16 11:03) [14]

    > Inovet ©   (16.12.16 10:51) [13]

    Если брать до десятки, то остальные представляют мало интереса:
    модули 2, 4, 5, 8, 10 - контролируют только последнюю или последние цифры.
    модули 3, 6, 9 - не контролируют перестановку соседних цифр (по признаку делимости).

    Все что больше 10ки увеличит "расход" идентификаторов. 11 в виде исключения.
  • DayGaykin © (16.12.16 11:04) [15]

    > Игорь Шевченко ©   (15.12.16 15:36) [7]
    > Для контроля ввода используют контрольные знаки. В частности,
    >  номера авиабилетов в качестве контрольного знака используют
    > отстаток от деления на 7 :)

    Не могу найти информацию об этом. Поделитесь ссылочкой?
  • картман © (16.12.16 14:07) [16]

    > Все что больше 10ки увеличит "расход" идентификаторов.

    хм...
  • Игорь Шевченко © (16.12.16 14:25) [17]

    > Не могу найти информацию об этом. Поделитесь ссылочкой?


    например http://www.sherrysnider.com/wp-content/portfolio/AirlineSupplementalCourseTextbook1_22.pdf

    искать по сочетанию check digit
  • Inovet © (16.12.16 16:40) [18]
    > [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
 
Конференция "Прочее" » Делмость как контроль ввода.
Есть новые Нет новых   [134431   +10][b:0][p:0.001]