Проверка правильности банковского счета
Помогите переписать на javascript проверка банковского счета.
function CheckSchet(const Value:String):Boolean; const SchetMask: array [1..23] of byte = (7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1); // весовые коэффициенты var I,Summa:Integer; begin Result:=False; Summa:=0; for I:=1 to 23 do begin if not (Value[I] in ['0'..'9']) then exit; Summa:=Summa+(StrToInt(Value[I])*SchetMask[I]) mod 10; // вычисляем контрольную сумму end; Result:=(Summa mod 10 = 0); // проверяем остаток от деления контрольной суммы на 10 с нулём end; Проверка правильности указания корреспондентского счёта: function CheckKS(const Value,BIK:String):Boolean; begin Result:=(Length(Value)=20) and CheckSchet('0'+Copy(BIK,5,2)+Value); end; Проверка правильности указания расчётного счёта: function CheckRS(const Value,BIK:String):Boolean; begin Result:=(Length(Value)=20) and CheckSchet(Copy(BIK,Length(BIK)-2,3)+Value); end; |
Ты смеёшься что ли?
|
я вот например не знаю как вот это реализовать
if not (Value[I] in ['0'..'9']) then |
kodermax,
Вы можете логику описать, я не знаю этого языка? |
это паскаль
логику могу Цитата:
|
Похоже на Object Pascal
|
Я имею ввиду код переведи на слова, комментарии поставь
|
алгоритм взят здесь
/* Алгоритм проверки счёта с помощью БИКа банка: 1. Изменение счета с учетом БИКа(см ниже). 2. Вычисляется контрольная сумма со следующими весовыми коэффициентами: (7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1) 3. Вычисляется контрольное число как остаток от деления контрольной суммы на 10 4. Контрольное число сравнивается с нулём. В случае их равенства расчётного счёт считается правильным. */ //функция проверки правильности указания банковского счёта function fn_bank_account(Str) { var result = false; var Sum = 0; //весовые коэффициенты var v = [7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,7,1]; for (var i = 0; i <= 22; i++) { //вычисляем контрольную сумму Sum = Sum + ( Number(Str.charAt(i)) * v[i] ) % 10; } //сравниваем остаток от деления контрольной суммы на 10 с нулём if(Sum % 10 == 0) { result = true; } return result; } /* Проверка правильности указания корреспондентского счёта: 1. Для проверки контрольной суммы перед корреспондентским счётом добавляются "0" и два знака БИКа банка, начиная с пятого знака. */ function fn_checkKS(Account,BIK) { return fn_bank_account('0'+BIK.substr(4,2)+Account); } /* Проверка правильности указания расчётного счёта: 1. Для проверки контрольной суммы перед расчётным счётом добавляются три последние цифры БИКа банка. */ function fn_checkRS(Account,BIK) { return fn_bank_account(BIK.substr(6,3)+Account); } |
Хахах, ну и откопал же ты старьё)
У меня даже такое ощущение, что эти сообщения не я писал. |
Часовой пояс GMT +3, время: 22:59. |