Ir para conteúdo
Fórum Script Brasil
  • 0

Programa Do Cpf


Guest hugo chagas de olivera

Pergunta

Guest hugo chagas de olivera

ae galera to fazendo um trabalho em linguagem c e não estou dando conta de fazer com que meu programa so aceite caracteres numericos...

utilizo o linux pra programar..

desde já agradeço pela ajuda

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Adaptando uma função que está no livro The C Programming Language, 2nd Edition...

#include <stdio.h>
#include <ctype.h>

int getint(int *cpf);

int main(void)
{
    int cpf;
    
    if ((getint(&cpf) != 9))
        printf("CPF invalido\n");
    else
        printf("%d\n", cpf);
    
    return 0;
}

int getint(int *cpf)
{
    int c;
    int contador;
    
    /* pula espaços em branco */
    while (isspace(c = getchar()))
       ;
        
    if (!isdigit(c))
        return 0;
        
    for (*cpf = 0, contador = 0; isdigit(c); c = getchar(), contador++)
        *cpf = 10 * *cpf + (c - '0');
        
    return contador;
}

Link para o comentário
Compartilhar em outros sites

  • 0

Opa!

Um código baseado nos valores decimais correspondentes aos caracteres na tabela ASCII. Os correspondentes em decimal dos caracteres numéricos (números de 0 a 9) na tabela vão de 48 a 57. Sendo assim, temos o código:

bool isNumber( char cpf[] )
{
    for ( int i = 0; i < 11; i++ ) {
        if ( cpf[ i ] >= 48 && cpf[ i ] <= 57 )
            return true;
        else
            return false;
    }
}

Algumas observações:

1 - No laço "for" pode-se usar a função "strlen", contida na biblioteca "string.h", para achar o comprimento da sua string e substituir o 11 que eu coloquei, pois coloquei 11 porque é o número de dígitos do CPF, mas você pode querer usar em string numéricas de outros comprimentos.

2 - Você pode se basear no código acima e na tabela ASCII para testar também se a sring é completamente formada por letras, sabendo que, nessa tabela, letras maiúsculas são diferentes das minúsculas.

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

2 - Você pode se basear no código acima e na tabela ASCII para testar também se a sring é completamente formada por letras, sabendo que, nessa tabela, letras maiúsculas são diferentes das minúsculas.

Aproveitando o tópico, para transformar um caracter em um número (às vezes isto pode ser muito útil) é só fazer:

char CARACTER;
int   NUMERO   ;

NUMERO = CARACTER - '0';
Se CARACTER estiver na faixa 48 à 57, NUMERO terá o valor correspondente. EX:
CARACTER = '0';
NUMERO = CARACTER - '0' /* o resultado é 0 */

CARACTER = '1';
NUMERO = CARACTER - '0' /* o resultado é 1, e assim vai.. */

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...