powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Алгоритм формирования контрольного числа страх.номера
17 сообщений из 17, страница 1 из 1
Алгоритм формирования контрольного числа страх.номера
    #38902651
alexwechsel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, не подскажите как лучше сделать такую вещь?

Алгоритм формирования контрольного числа Страхового номера
Проверка контрольного числа Страхового номера проводится только для номеров больше номера 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 x 9 + 1 x 8 + 2 x 7 + 2 x 6 + 3 x 5 + 3 x 4 + 4 x 3 + 4 x 2 + 5 x 1 = 95
95 / !101! = 95
Контрольное число = 95 - указано верно
Некоторые частные случаи:
99 / !101! = 99
100 / !101! = 00
101 / !101! = 00
102 / !101! = 01
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38902853
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что конкретно не получается?
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38902954
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Держи
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
? CheckNom('112-233-445 95')

func CheckNom
lpara tcNom
LOCAL i, j, lcMask, lnSum, lnVal 
tcNom = alltrim(tcNom)
lcMask = chrtran(tcNom, '1234567890', '***********')
if lcMask != '***-***-*** **'
	? 'Неверный формат'
else
	lnVal = val(left(chrtran(alltrim(tcNom), lcMask, ''), 9))
	if lnVal <= 1001998
		? 'Не проверяется'
		return .T.
	endif
	lnSum = 0
	for i = 1 to 9
		j = lnVal % 10
		lnVal = (lnVal - j) / 10
		lnSum = lnSum + i * j
	endfor
	if lnSum % 101 % 100 = val(right(tcNom, 2))
		return .T.
	endif
endif
return .F.
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903052
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДержи


Наворотил ... вместо VAL(SUBSTR(tcString,i,1))
и RETURN MOD(...) = VAL(RIGHT(tcString,2))
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903058
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima TДержи


Наворотил ... вместо VAL(SUBSTR(tcString,i,1))
и RETURN MOD(...) = VAL(RIGHT(tcString,2))
Ты полный код дай, а то скулишь за то что ответы неполные, а сам?
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903087
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T

Вы ведь не новичок, а тоже "дай", с такой-то подсказкой ...
Да и новичок этот не промах, решил вместо своей головы чужой поработать.

Код не проверял, текст навскидку, доведете до ума:
tcString = CTRTRAN(tcStrng,'-','')
j = 0
FOR i = 1 TO 9
j = j + (10-i)*VAL(SUBSTR(tcString,i,1))
ENDFOR
RETURN MOD(j,101) = VAL(RIGHT(tcString,2))
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903096
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Код не проверял, текст навскидку, доведете до ума:
А мне-то оно зачем доводить? Я выше доведенный и проверенный привел.

Я тебя не пойму, ты со своими обидами на фокс, на котором вынужден писать, тут тролишь, какие-то обязанности всем придумываешь... оно тебе надо?
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903109
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T

Что-то нервно ты на все реагируешь, цепляешься ...
Нравится тебе твой код, да на здоровье.
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903133
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12Dima T

Что-то нервно ты на все реагируешь, цепляешься ...
Нравится тебе твой код, да на здоровье.
Я не психиатр, но даже мне виден твой неадекват. Без обид, ты мне ничего плохого не сделал, я по доброму тебе советую - займись тем что тебе интересно, ты не тупой, деньги сами прийдут, лично я всегда так поступал, и сейчас, в очередной кризис, забил на все и просто усиленно делаю что хочу сделать.
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903152
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, ну не волнуют меня твои психиатрические проблемы.

Вон на фоксклубе еще код выложили, поинтересуйся для развития кругозора.
Да и с MOD() оказывается у меня не все сходится.
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903161
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MOD() и % одно и то же.
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903188
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TMOD() и % одно и то же.

Вот и хорошо, раз успокоились.
А то я грешным делом подумал, что вы своим опытом компетентно делитесь.

% это FPD, а в VFP - MOD(), правила хорошего тона.
Но здесь с MOD проблема другая, двойное деление.

А вот проверку я бы оставил, стандарт все-таки:
IF !(CHRTRAN(tcString,'1234567890','***********') == '***-***-*** **')
RETURN .F.
ENDIF
И в tcStrng у меня буква пропущена, исправьте у себя.
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903200
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12% это FPD, а в VFP - MOD(), правила хорошего тона.

с чего вдруг? Дай ссылку на те "правила хорошего тона"
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903203
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsg12% это FPD, а в VFP - MOD(), правила хорошего тона.

с чего вдруг? Дай ссылку на те "правила хорошего тона"

Зато теперь вы знаете, не спутаете.
На сайте Microsoft было пояснение, придется вам самим там погуглить, не буду же я на каждое слово ссылки собирать.
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903441
alexwechsel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
Спасибо большое, очень выручил! Может посоветуешь, по какой книге удобнее учить фокс?:)
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903468
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexwechselDima T,
Спасибо большое, очень выручил! Может посоветуешь, по какой книге удобнее учить фокс?:)
Лично мне больше всего понравилось М. Базиян "Использование Visual FoxPro 6"
То что 6 не пугайся, в целом принципы не поменялись.
Затем что новое в 9-ке появилось - по любой книжке для 9-ки.
...
Рейтинг: 0 / 0
Алгоритм формирования контрольного числа страх.номера
    #38903712
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще добавить, что на календаре все-таки 2015 год, а не 2005, в котором по традиции топикстартер и застрянет.
И выучит он таким путем фокс как раз к пенсии, если к тому времени ПФР все еще будет сидеть на VFP.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Алгоритм формирования контрольного числа страх.номера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]