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

Programa codigo de barras


Giza

Pergunta

Oi,

Não querendo abusar, mas preciso entregar um trabalho em C para encerramento do semestre e já li e reli o enunciado do programa e não consigo entender o calculo, sei q vou precisar usar muitos do - while e muitos for com vetores e matrizes, será que alguém poderia me ajudar?

Segue o enunciado:

Faça um programa em C que leia os elementos de um código de barras e através de uma função calcule o dígito verificador.

Abaixo a regra para cálculo:

Cálculo do Dígito Verificador Geral

1.Multiplique cada elemento do código de barras, iniciando-se da direita para a esquerda e pela seqüência de 2 a 9, ou seja; 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4,..., e assim por diante;

2.Some o resultado de cada produto obtido na multiplicação do item anterior, obtendo-se um total “X”;

3.Divida o total “X” por 11 (Y = X/11) e determine o resto da divisão ®;

4.Calcule o DV através da expressão DV = 11 – R.

Observação: para o código de barras, sempre que o resto for 0, 1 ou 10, deverá ser utilizado o dígito 1.

Exemplo:

BANCO M DV FATOR VALOR CAMPO LIVRE

+-----+---+---+------+------------+-------+------------+------------+

| 799 | 9 | | 1232 | 0000006600 | 78781 | 3087550304 | 2541200000 |

+-----+---+---+------+------------+-------+------------+------------+

432 9 8765 4329876543 29876 5432987654 3298765432

Soma dos produtos: X = 720

Divisão: Y = 720/11 = 65,4545... = 65 + 5/11

Resto: R = 5

Dígito verificador: DV = 11 - R = 11 - 5 = 6

Obrigada, :huh:

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Boa noite,

Consegui fazer este programa, no entanto não está calculando o DV, e acho que os cálculos estão corretos...

Também não sei como fazer para ele calcular as multiplicações sucessivas de traz pra frente....

Se tivesse tempo continuaria tentando, mas preciso entregar amanhã.

Segue o codigo:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#define max 43

int caldv(int vet[max]);
int main()
{
int vet[max], ind;

puts("|-----|-----|----------|----------------|--------|----------------|-------------|");
puts("|BANCO   M     FATOR         VALOR                  CAMPO LIVRE                 |");           
puts("|-----|-----|----------|----------------|--------|----------------|-------------|");
puts("| 000    0     0000       0000000000      00000     0000000000       0000000000 |");
puts("|-----|-----|----------|----------------|--------|----------------|-------------|");

puts("----CALCULO DO DIGITO VERIFICADOR----");
puts("----CODIGO DE BARRAS----");
for(ind=0;ind<max;ind++){
   printf("DIGITO - %i - ",ind+1);
    scanf("%i", &vet[ind]);
}

  puts("|-----|-----|----|----------|----------------|--------|----------------|-------------|");
  puts("|BANCO   M    DV    FATOR         VALOR                  CAMPO LIVRE                 |");           
  puts("|-----|-----|----|----------|----------------|--------|----------------|-------------|");
printf("| 000    0    %i     0000      0000000000      00000    0000000000        0000000000 |",caldv(vet));
  puts("|-----|-----|----|----------|----------------|--------|----------------|-------------|");
  
system("PAUSE");    
  
}

int caldv(int vet[max]){
int ind, soma=0, dv=0, resto=0;

for(ind=2;ind<10;ind++){
    soma=soma+(ind*vet[max]);
resto=soma%11;
dv=11-resto;
}
return(dv);
}

Obigada

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...