Funcao - calculo de modulo 11 |
Top Previous Next |
|
// O modulo 11 é calculado multiplicando-se os algarismos da direita para a esquerda por 9 depois 8 ... // até 2 iniando novamente no 9 a soma resultante function CalcModulo11(const S: string): string; var I, Mult, Tot: Integer; begin Tot := 0; Mult := 2; for I := Length(S) downto 1 do begin Tot := Tot + (StrToInt(S[I]) * Mult); Inc(Mult); if Mult > 9 then Mult := 2; end; Tot := 11 - (Tot mod 11); if Tot > 9 then Tot := 1; Result := IntToStr(Tot); end;
---------------------------------------------------------
// esta eu achei na net function CalculaDV11(const numero_base: string): string; var i, tamanho_num, peso, soma, resto: integer; begin tamanho_num := length(numero_base); peso := 2; soma := 0; for i := (tamanho_num) downto 1 do begin soma := soma + (StrToInt(numero_base[i]) * peso); if peso = 9 then peso := 2 else peso := peso + 1; end; resto := soma mod 11;
if (resto = 0) or (resto = 1) then Result := '0' else Result := IntToStr(11 - resto); end;
function VerificaDV11(entrada : string): boolean; var parte_ini, parte_fin : string; begin parte_ini := Copy(entrada, 1, Length(entrada)-1); parte_fin := Copy(entrada, Length(entrada), 1); Result := StrToInt(parte_fin) = CalculaDV11(parte_ini); end;
|