Validação de NIF em C++

Algoritmo de validação de um NIF em C++

#include <iostream>

int nif, n, nif_d[8], resto, dig_controlo, verificacao;
int resultado=0;

int main(){
  printf("Insira o seu NIF \n");
  scanf("%d",&nif);

  //Separação de dígitos num array
  for(n=9;n>=1;n--){
    nif_d[n]=nif%10;
    nif/=10;
  }

  //Atribui o último dígito à variável verificacao
  verificacao = nif_d[9];

  //Verificar se o NIF possuí 9 dígitos e consequente verificação dos primeiros dígitos
  if((nif<=999999999||nif>99999999)&&((nif_d[1]==1||nif_d[1]==2||nif_d[1]==3)||(nif_d[1]==4&&nif_d[2]==5)||(nif_d[1]==5)||(nif_d[1]==6)||(nif_d[1]==7&&nif_d[2]==0)||(nif_d[1]==7&&nif_d[2]==4)||(nif_d[1]==7&&nif_d[2]==5)||(nif_d[1]==7&&nif_d[2]==1)||(nif_d[1]==7&&nif_d[2]==2)||(nif_d[1]==7&&nif_d[2]==7)||(nif_d[1]==7&&nif_d[2]==8)||(nif_d[1]==7&&nif_d[2]==9)||(nif_d[1]==8)||(nif_d[1]==9&&nif_d[2]==0)||(nif_d[1]==9&&nif_d[2]==1)||(nif_d[1]==9&&nif_d[2]==8)||(nif_d[1]==9&&nif_d[2]==9))){

    //Calcular o valor da soma da multiplicação dos dígitos
    for(n=9;n>=2;n--){
      resultado+=nif_d[10-n]*n;
    }

    //Calcular o valor do resto
    resto=resultado%11;

    //Cálculo do dígito de controlo
    if(resto<2){
      dig_controlo=0;
    }else{
      dig_controlo=11-resto;
    }

    //Verificação com o dígito de controlo
    if(dig_controlo==verificacao){
      printf("O NIF é válido\n");
    }else{
      printf("O NIF é inválido\n");
    }
  }else{
    printf("O NIF é inválido\n");
  }
}

One Reply to “Validação de NIF em C++”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.