none
Validação de CPF RRS feed

  • Pergunta

  • Boa noite pessoal.

    Estou no inicio do primeiro módulo de meu curso e estamos aprendendo os primeiros passos em C#, estou tentando criar um programa de validação de CPF. Bom olhei alguns modelos na internet e estou tentando entender eles, todos praticamente estavam em Booliano, fiz algumas alterações no código convertendo ele, no entanto, nas 2 ultimas linhas do código não estou conseguindo a conversão apropriada, será que alguém consegue me ajudar??

    Especificamente aqui ele está dando erro "return cpf.EndsWith(digito);"

    Desde já muito obrigado.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApp4
    {
        class Program
        {
            static void Main(string[] args)
            {
                Begin:

                Console.WriteLine("Digite o numero do CPF: ");
                string cpf = Convert.ToString(Console.ReadLine());



                int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2 };
                int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };
                string tempCpf;
                string digito;
                int soma;
                int resto;

                cpf = cpf.Trim();
                cpf = cpf.Replace(".", "").Replace("-", "");

                if (cpf.Length != 11)
                {
                    Console.WriteLine("Numero incorreto.");
                    goto Begin;
                }
                tempCpf = cpf.Substring(0, 9);
                soma = 0;

                for (int i = 0; i < 9; i++)
                {
                    soma += int.Parse(tempCpf[i].ToString()) * multiplicador1[i];
                }
                resto = soma % 11;
                if (resto < 2)
                {
                    resto = 0;
                }
                else
                {
                    resto = 11 - resto;
                }

                digito = resto.ToString();

                tempCpf = tempCpf + digito;

                soma = 0;
                for (int i = 0; i < 10; i++)
                {
                    soma += int.Parse(tempCpf[i].ToString()) * multiplicador2[i];
                }
                resto = soma % 11;
                if (resto < 2)
                {
                    resto = 0;
                }
                else
                {
                    resto = 11 - resto;
                }

                digito = digito + resto.ToString();
                return cpf.EndsWith(digito);
                Console.WriteLine("CPF " + cpf + " valido.");
            }
        }
    }

    segunda-feira, 18 de setembro de 2017 01:45

Respostas

  • Olá Fabiano tudo bem?

    Analisando rapidamente seu código eu posso apontar alguns problemas:

    1 - Seu método Main é void, ou seja, não retorna nada. Porém, você tem um "return cpf.EndsWith(digito);" no final. Acho que você pode remover esta linha;

    2 - Seu código não trata exceções, que são erros de execução. Por exemplo, tentar converter uma letra em um número. Neste caso se o usuário digitar um valor inválido pode gerar exceção. Para simplificar seu programa, você pode colocar todo seu código dentro de um try catch desta forma:

    try

    {

    ..código

    }

    catch (Exception)

    {

    Console.WriteLine("CPF inválido.");

    }

    3 - No código "string cpf = Convert.ToString(Console.ReadLine());", não é necessário colocar Convert.ToString, apenas "string cpf = Console.ReadLine();" pois ReadLine já retorna uma string e por isso não é necessário a conversão novamente para string;

    Espero ter ajudado!



    segunda-feira, 18 de setembro de 2017 11:11

Todas as Respostas

  • Olá Fabiano tudo bem?

    Analisando rapidamente seu código eu posso apontar alguns problemas:

    1 - Seu método Main é void, ou seja, não retorna nada. Porém, você tem um "return cpf.EndsWith(digito);" no final. Acho que você pode remover esta linha;

    2 - Seu código não trata exceções, que são erros de execução. Por exemplo, tentar converter uma letra em um número. Neste caso se o usuário digitar um valor inválido pode gerar exceção. Para simplificar seu programa, você pode colocar todo seu código dentro de um try catch desta forma:

    try

    {

    ..código

    }

    catch (Exception)

    {

    Console.WriteLine("CPF inválido.");

    }

    3 - No código "string cpf = Convert.ToString(Console.ReadLine());", não é necessário colocar Convert.ToString, apenas "string cpf = Console.ReadLine();" pois ReadLine já retorna uma string e por isso não é necessário a conversão novamente para string;

    Espero ter ajudado!



    segunda-feira, 18 de setembro de 2017 11:11
  • Boa noite,

    R

    Róger em primeiro lugar peço desculpa por ter colocado seu nome errado.

    Vou colocar em teste qualquer novidade aviso.

    Obrigado!!!!

    sexta-feira, 29 de setembro de 2017 01:20