Ir ao conteúdo
  • Cadastre-se

cpdmg

Membro Júnior
  • Posts

    11
  • Cadastrado em

  • Última visita

posts postados por cpdmg

  1. @bngomes muito obrigado mesmo... consegui montar um script que me atende em sql

     

     

    declare @soma int, @contador int, @digito int, @valor varchar(8), @resto int
    
    set @soma  = 0
    set @contador = 1
    set @valor = 97476052
    
    set @soma = @soma + (substring(@valor,@contador,@contador) * 8) /*n1*/
    set @soma = @soma + (substring(@valor,@contador+1,@contador) * 6) /*n2*/
    set @soma = @soma + (substring(@valor,@contador+2,@contador) * 4) /*n3*/
    set @soma = @soma + (substring(@valor,@contador+3,@contador) * 2) /*n4*/
    set @soma = @soma + (substring(@valor,@contador+4,@contador) * 3) /*n5*/
    set @soma = @soma + (substring(@valor,@contador+5,@contador) * 5) /*n6*/
    set @soma = @soma + (substring(@valor,@contador+6,@contador) * 9) /*n7*/
    set @soma = @soma + (substring(@valor,@contador+7,@contador) * 7) /*n8*/
    
    set @resto = @soma%11
    set @digito = case when @resto = 0 then  5 when @resto = 1 then  0 else 11 - @resto end
    select @digito digito

     

  2. public class DvVerificador { 
    	public static void main(String[] args) { 
    		System.out.println(geraEtiquetaComDigitoVerificador("15653850")); 
    } 
    // Exemplo e-ticket 15653829 (dv=7) 
    
    public static String geraEtiquetaComDigitoVerificador(String numeroEtiqueta) { 
    
    	Integer[] multiplicadores = {8, 6, 4, 2, 3, 5, 9, 7}; 
    	Integer soma = 0; 
    	String dv; 
    
    if (numeroEtiqueta.length() != 8) { 
    	numeroEtiqueta = "Error"; 
    	} else { 
    	for (int i = 0; i < 8; i++) { 
    		soma += new Integer(numeroEtiqueta.substring(i, (i + 1))) * multiplicadores[i]; 
    	} 
    	Integer resto = soma % 11; 
    	
    	if (resto == 0) { 
    		dv = "5"; 
    	} else if (resto == 1) { 
    		dv = "0"; 
    	} else { 
    		dv = new Integer(11 - resto).toString(); 
    	} 
    	numeroEtiqueta += dv; 
    	} 
    	return numeroEtiqueta; 
    	} 
    }

    Duvida 01: Quando eu tenho o seguinte comando

    Integer[] multiplicadores = {8, 6, 4, 2, 3, 5, 9, 7};

    ele está criando uma matriz, e respeitando a ordem: 
    primeiro numero = 8
    segundo numero = 6 e assim sucessivamente???

     

    Duvida 02: Quando eu tenho o seguinte comando

    for (int i = 0; i < 8; i++)

    seria um loop, onde i começa com 0, não pode ser maior ou igual a 8, e i++ significa que ele auto incrementa?
     

    Duvida 03: Quando eu tenho o seguinte comando

    for (int i = 0; i < 8; i++) { soma += new Integer(numeroEtiqueta.substring(i, (i + 1))) * multiplicadores; }

    ele começando o i = 0 no substring não vai dar erro?

    algoritimo.jpg

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!