Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Посоветуйте алгоритм контрольной цифры.   Найти похожие ветки 

 
Дмитрий С ©   (2012-06-20 23:22) [0]

Есть некое число, которое пользователь должен ввести от 4 до 8 цифр.
Это число должно дополняться 1-2 цифрами исключающих (максимально насколько это возможно) ошибочный ввод.
Как например это делается со EAN-13 штрихкодом.


 
wl ©   (2012-06-20 23:26) [1]

посмотри http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%A5%D0%B5%D0%BC%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0
подойдёт?


 
palva ©   (2012-06-20 23:29) [2]

Контрольная цифра служит для проверки правильности написания цифровой части ISBN и вычисляется следующим образом: каждая цифра, входящая в состав ISBN умножается на числовой весовой коэффициент - от 10 до 2. Результаты умножений на весовые коэффициент складываются. Сумма произведений делится на модуль 11 - (постоянный делитель). Из модуля 11 вычитается остаток от деления, который и является контрольной цифрой. Если остатка нет, контрольной цифрой является 0, если остаток 10, он записывается как X. Hапример: Цифровая часть: 505000746 Весовые коэффициенты, расположенные в порядке убывания: 10 9 8 7 6 5 4 3 2 Результаты умножения на весовые коэффициенты: 50 0 40 0 0 0 28 12 12 Сумма произведений: 50 + 40+ 28 + 12 + 12 = 142 Сумма делится на модуль 142: 11 = 12 + остаток 10 Из модуля вычитается остаток 10: 11-10=1 Результат - контрольная цифра 1 Таким образом, полный ISBN будет: 5-05-000746-1


 
Sha ©   (2012-06-20 23:43) [3]

http://ru.wikipedia.org/wiki/Алгоритм_Верхоффа
http://en.wikibooks.org/wiki/Algorithm_Implementation/Checksums/Verhoeff_Algorithm


 
DVM ©   (2012-06-20 23:50) [4]

А обычный CRC8 не подойдет разве?


 
Sha ©   (2012-06-21 00:03) [5]

> DVM

если надо одной десятичной цифрой,
то круче, чем Verhoeff, не получится


 
Дмитрий С ©   (2012-06-21 02:07) [6]


> wl ©   (20.06.12 23:26) [1]

Какой-то слишком сложный, с ходу не поймешь то что нужно или нет.


> Sha ©   (20.06.12 23:43) [3]

А вот это то что надо:) На PHP клево есть, еще на JS надо будет сделать:)


 
Дмитрий С ©   (2012-06-21 02:07) [7]

Спасибо.


 
Inovet ©   (2012-06-21 02:23) [8]

В ПФР так проверяется.

1. Алгоритм  формирования контрольного числа Страхового номера

Проверка контрольного числа Страхового номера проводится только для номеров больше  номера 001–001–998
Контрольное число Страхового номера рассчитывается следующим образом:
• каждая цифра Страхового номера умножается на номер своей позиции (позиции отсчитываются с конца)
• полученные произведения суммируются
• сумма делится на 101
• последние две цифры остатка от деления является Контрольным числом.
Например: Указан страховой номер 112–233–445 95
Проверяем правильность контрольного числа:
 цифры номера 1 1 2 2 3 3 4 4 5
 номер позиции 9 8 7 6 5 4 3 2 1
1х9+1х8+2х7+2х6+3х5+3х4+4х3+4х2+5х1=95
95 / !101! =95
Контрольное число=95 – указано верно
Некоторые частные случаи:
99 / !101! =99
100 / !101! =00
101 / !101! =00
102 / !101! =01


 
ДимкаНа   (2012-06-21 02:43) [9]

Цифры две, а качество хуже. С ходу можно пример с ошибкой в 1 цифре или с перестановкой придумать


 
Германн ©   (2012-06-21 03:36) [10]


> ДимкаНа   (21.06.12 02:43) [9]
>
> Цифры две, а качество хуже. С ходу можно пример с ошибкой
> в 1 цифре или с перестановкой придумать

А ты думал, что "контрольные суммы" гарантируют хоть что-то?


 
Германн ©   (2012-06-21 03:45) [11]

Если это не стандартный алгоритм, то я плюсую к DVM ©   (20.06.12 23:50) [4]
Имхо самый надёжный (но естественно не гарантирующий) алгоритм.


 
Дмитрий С ©   (2012-06-21 11:08) [12]


> А ты думал, что "контрольные суммы" гарантируют хоть что-
> то?

Смотри что гарантирует:
http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%92%D0%B5%D1%80%D1%85%D0%BE%D1%84%D1%84%D0%B0#.D0.94.D0.BE.D1.81.D1.82.D0.BE.D0.B8.D0.BD.D1.81.D1.82.D0.B2.D0.B0_.D0.B8_.D0 .BD.D0.B5.D0.B4.D0.BE.D1.81.D1.82.D0.B0.D1.82.D0.BA.D0.B8
Плохо что таких данных по CRC8 нет


 
DVM ©   (2012-06-21 11:37) [13]


> Дмитрий С ©   (21.06.12 11:08) [12]


> Плохо что таких данных по CRC8 нет

CRC8 потому что много разных, у каждого свои характеристики и заточены они под разные ошибки:

CRC8ATM
CRC8ITU
CRC8ROHC
CRC8DARC
CRC8ICODE
CRC8J1850
CRC8MAXIM
CRC8WCDMA
CRC8CCITT



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.094 c
15-1334134947
xss22
2012-04-11 13:02
2013.03.22
Утечки памяти в TStringList::GetText()


15-1347955003
Kerk
2012-09-18 11:56
2013.03.22
Книжка "Выучи Delphi за 21 день" явно устарела.


2-1334645281
Handle
2012-04-17 10:48
2013.03.22
В каком событии рассчитывать координаты отрисовки


2-1328181215
harisma
2012-02-02 15:13
2013.03.22
Корректно освободить память


4-1245790108
istok20
2009-06-24 00:48
2013.03.22
перехват native api в 64bit Windows...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский