Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Me ajude nesse Exercicio

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C# Me ajude nesse Exercicio

    Rotina de validação e formatação de CPF

    Regras:

    a) Validar se o código digitado na tela contém apenas 11 dígitos numéricos. Qualquer ocorrência contrária, devolver erro;

    b) Como funciona a validação do CPF?

    • Descrição de como funciona a rotina de validação do CPF.
    No Brasil existe o CPF (Cadastro de Pessoas Físicas) que serve para identificar cada indivíduo no país. O número do CPF é composto de 11 dígitos, sendo os dois últimos os dígitos de verificação. A fórmula para verificar a validade do número do CPF é simples e é explicada abaixo:

    Vamos tomar como exemplo o número 123.456.789-09

    • 1º Dígito Verificador
    Primeiro calculamos a soma da multiplicação dos 9 primeiros dígitos por 10, 9, 8, ... , 3, 2, respectivamente. Ou seja

    Soma = (1*10) + (2*9) + ... + (8*3) + (9*2)

    Em seguida, dividimos e multiplicamos por 11. (Nota: Ao multiplicarmos utilizamos o valor inteiro da divisão).

    Valor = (Soma/11) * 11

    Por fim, subtraímos Valor de Soma.

    Resultado = Soma - Valor

    Note que acabamos de realizar o módulo de Soma e 11. As duas operações anteriores podem ser substituídas por Resultado = Soma módulo 11.

    Agora analisamos Resultado:
    Se Resultado for igual à 1 ou à 0, então o 1º dígito verificador é 0;
    Caso contrário, o 1º dígito verificador é o resultado da subtração de Resultado de 11.


    • 2º Dígito Verificador
    Primeiro calculamos a soma da multiplicação dos 9 primeiros dígitos por 11, 10, 9, ... , 4, 3, respectivamente e em seguida somamos com (Digito1*2), sendo que Digito1 é o valor encontrado para o 1º dígito verificador. Ou seja

    Soma = (1*11) + (2*10) + ... + (8*4) + (9*3) + (Digito1*2)

    O resto é semelhante ao que foi feito anteriormente. Dividimos e multiplicamos por 11. (Nota: Ao multiplicarmos utilizamos o valor inteiro da divisão).

    Valor = (Soma/11) * 11

    Por fim, subtraímos Valor de Soma.

    Resultado = Soma - Valor

    Agora analisamos Resultado:
    Se Resultado for igual à 1 ou à 0, então o 2º dígito verificador é 0;
    Caso contrário, o 2º dígito verificador é o resultado da subtração de Resultado de 11.


    No nosso exemplo (123.456.789-09) o número é válido.

  • Font Size
    #2
    Código:
    using System;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Write("CPF: ");
                Console.WriteLine(ValidarCPF(Console.ReadLine()));
                Console.ReadKey();
            }
    
            public static bool ValidarCPF(string CPF)
            {
                foreach (char c in CPF)
                    if (!char.IsNumber(c)) CPF = CPF.Replace(c.ToString(), "");
    
                if (CPF.Length != 11) return false;
                else return ValidarDigitos(CPF);
            }
    
            private static bool ValidarDigitos(string CPF)
            {
                short Digito1;
                short Digito2;
    
                short soma = 0;
                for (int i = 0; i < 9; i++)
                    soma += (short)((short.Parse(CPF[i].ToString()) * (10 - i)));
    
                Digito1 = (short)(((short)(soma / 11)) * 11);
                Digito1 = (short)(soma - Digito1);
                if (Digito1 == 0 || Digito1 == 1) Digito1 = 0;
                else Digito1 = (short)(11 - Digito1);
    
                if (Digito1.ToString() != CPF[9].ToString()) return false;
    
                soma = 0;
                for (int i = 0; i < 9; i++)
                    soma += (short)((short.Parse(CPF[i].ToString()) * (11 - i)));
    
                soma += (short)(Digito1 * 2);
    
                Digito2 = (short)(soma / 11);
                Digito2 *= 11;
                Digito2 = (short)(soma - Digito2);
    
                if (Digito2 == 0 || Digito2 == 1) Digito2 = 0;
                else Digito2 = (short)(11 - Digito2);
    
                return (Digito2.ToString() == CPF[10].ToString());
            }
        }
    }
    Com amor s2

    Comment

    X
    Working...
    X