Ir ao conteúdo

digito Verificador em C


Ferreira27

Posts recomendados

Postado

Numa certa agência bancária, as contas são identificadas por números de até seis dígitos seguidos de um dígito verificador, calculado conforme exemplificado a seguir.

Seja n = 7314 o número da conta.

1) Adicionamos os dígitos de n e obtemos a soma s = 4+1+3+7 = 15;

2) Calculamos o resto da divisão de s por 10 e obtemos o dígito d = 5.

3) Número de conta completo: 007314−5.

Dado um número de conta n, informado pelo usuário, exiba o número de conta completo correspondente.

#include <stdio.h>

#include <stdlib.h>

int main() {

long conta;

int soma=0, dig, aux, alg;

printf("Informe o número da conta sem o DV: ");

scanf("%d", &conta);

while ((conta < 1) || (conta > 999999)) {

printf("Conta Inválida. Reinforme o número da conta sem o DV: ");

scanf("%d", &conta);

}

aux = conta;

while (aux > 0) {

alg = aux % 10;

soma += alg;

aux /= 10;

}

dig = soma % 10;

printf("Número de conta completo: %.6ld-%d\n", conta, dig);

system ("pause");

}

a minha duvida é nesse trecho do código alguém poderia me explicar :

aux = conta;

while (aux > 0) {

alg = aux % 10;

soma += alg;

aux /= 10;

}

dig = soma % 10;

Postado

Olá amigo,

o que esse trecho faz é o seguinte, imagine um número, como no seu caso: 7314

Quando o loop inicia ele recebe o último algarismo do número que acabou de receber, ou seja, 4. Por que?

7314 % 10 = 4, O resto de um número dividido por 10 é sempre o último algarismo.

Logo após isso, a variável soma, que retornará o digito verificador é acrescida do número 4.

E agora vem a parte mais interessante, dividimos o aux por 10, ou seja, o número que antes era 7314, agora passa a ser 731,4, porém, como desconsideramos os valores decimais quando o loop pedir novamente o resto de 731,4 dividido por 10 o que nos será retornado é o número 1 e, logo após, esse número 1 é acrescido a variável soma, e assim por diante, veja os passos:

7314 % 10 = 4
soma += 4;
soma = 4
7314/10 = 731.4

731.4 % 10 = 1
soma+= 1;
soma = 5
731.4 / 10 = 73.14

73.14 % 10 = 3
soma+=3;
soma = 8
73.14 / 10 = 7.314

7.314 % 10 = 7
soma+= 7;
soma = 15

Digito = 15
15 % 10 = 5

Espero que tenha entendido, grande abraço.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...