validar BI em C#

hummm, isso depende muito dos objectivos do programa em questão :P

Recentemente fiz um trabalho onde considerámos o dono do BI como um cidadão de qualquer país, caso do Brasil os BIs são alfanuméricos..., se for apenas BI Português apenas tens de verificar se tem os digitos todos, salvo erro têm de ter 8 digitos. É uma simples comparação.

A menos que queiras ter em conta o número de controlo dos BIs, aí existem regras, salvo erro...

abraços, HecKel
 
Esta funcao deve calcular o checkdigit.. aquele digito que esta' a' direita do numero do BI.


Código:
static int calc_check_digit(string BI)
{
  int i=2;
  int sum=0;

  foreach(char c in BI)
  {
     sum += (c - '0') * i;
     i++;
  }
  return sum%11;
}
 
hummm, isso depende muito dos objectivos do programa em questão :P

Recentemente fiz um trabalho onde considerámos o dono do BI como um cidadão de qualquer país, caso do Brasil os BIs são alfanuméricos..., se for apenas BI Português apenas tens de verificar se tem os digitos todos, salvo erro têm de ter 8 digitos. É uma simples comparação.

A menos que queiras ter em conta o número de controlo dos BIs, aí existem regras, salvo erro...

abraços, HecKel


Tem de ter 9 digitos.... especifica qual o objectivo em questão
 
uma vez um professor meu de matemática disse-me que para validar um BI, é com um polinómio maluco, que dá os digitos do BI, em que o resultado desse polinómio tem de ser diferente de 0... eu vou perguntar a esse professor se o encontrar, pk para validar o nº de contribuinte também é uma "formula", e penso que para o BI será a mesma coisa...
 
Experimentei o código do hugotr e funcionou perfeitamente.
O meu BI tem 8 dígitos, e o numero de controlo apareceu bem.
O do meu irmão, idem. 8 digitos, apareceu bem.
O BI do meu pai tem 7 dígitos. Nessa situação, o número de controlo estava errado.

Para corrigir, acrescenta-se um zero à esquerda do BI de modo a perfazer os 8 dígitos. Assim, o número de controlo já aparece correctamente. É tão simples quanto isso :)

Não esquecer que este algoritmo deve ser a forma do MJ de Portugal calcular o dígito de controlo ;)
 
Este está em javascript

Há tempos tive de programar um validador de NIF e BI. Reparei que o algoritmo de validação destes dois números tem uma parte comum. Na altura programei aquilo em javascript. Mas passar isto pra C# é uma operação que envolve 2 minutos.

Código:
function CheckNIF(nif){
 var c;   
 
 // verifica o tamanho
 if(nif.length != 9)
  return false;
            
 // valida primeiro digito
 c = nif.charAt(0);
 if((c=='0')||(c=='3')||(c=='4')||(c=='7')||(c=='8'))
  return false;
    
 // algoritmo de validação
 return AlgoritmoValidacao(nif);
}
                
function CheckBI(nbi, lastDigit){
 var BIformated;
 // verifica tamanhos
 if((nbi.length < 7) || (nbi.length > 8))
  return false;
 if(lastDigit.length != 1)
  return false;
 
 // prepara o numero de BI formatado
 if(nbi.length == 8){
  BIformated = nbi + lastDigit;
 } else {
  BIformated = '0' + nbi + lastDigit;
 }
 
 // algoritmo de validação
 return AlgoritmoValidacao(BIformated);
}

function AlgoritmoValidacao(numFormated){
 var pos, ctl, val = 0;
 for(pos=0; pos<8; ++pos){
  val += parseInt(numFormated.charAt(pos)) * (9 - pos);
 }
                   
 ctl = 0;
 if((val%11) != 0)
  ctl = (11 - val % 11) % 10;
 return ctl == parseInt(numFormated.charAt(8));
}
 
Gostaria de saber como faço para validar o nif, ao introduzir o numero do nif para que me diga se é valido ou não, dps tudo isto será validado através de uma web reference, mas nao sei como fazer isto..

I need Help ;(
 
Gostaria de saber como faço para validar o nif, ao introduzir o numero do nif para que me diga se é valido ou não, dps tudo isto será validado através de uma web reference, mas nao sei como fazer isto..

I need Help ;(
Chegaste a ler o link do post anterior ao teu?
 
Back
Topo