Ir ao conteúdo
  • Cadastre-se

Javascript Validando Números de Contas


Posts recomendados

Olá pessoal!

 

Eu estou tentando resolver um código de um desafio, mas não consigo achar o erro que impede de imprimir a saída. Aponta que minha implementação encerrou com um retorno inválido.

 

Segue a Descrição

Agora, vamos combinar vários conceitos de lógica de programação, como manipulação de strings, operações matemáticas, controle de fluxo e expressões regulares, aplicados para o desenvolvimento de uma solução de correção para a equipe de administração de uma empresa bancária. Eles precisam de uma solução para a validação de números de contas com base em regras específicas. O programa solicitará ao usuário que insira um número de conta e verificará se ele atende aos critérios predefinidos de validação. Além disso, você pode adicionar a capacidade de informar ao usuário qual regra específica não foi cumprida caso a validação falhe.

Regras de Validação:

O número de conta deve ter exatamente 6 dígitos.

O primeiro dígito deve ser maior que zero, ou seja, estar no intervalo de 1 a 9.

A soma dos dígitos do número de conta não deve ser maior do que 30.

Entrada

O programa deve solicitar as seguintes informações:

Número de conta (uma sequência de 6 dígitos).

Saída

O programa deverá fornecer uma mensagem que informa se o número de conta é válido ou inválido, indicando se o número de conta atende às regras de validação. Caso o número de conta seja inválido, o programa deve informar qual regra específica não foi cumprida.

Exemplos

A tabela abaixo apresenta exemplos com alguns dados de entrada e suas respectivas saídas esperadas. Certifique-se de testar seu programa com esses exemplos e com outros casos possíveis.

 

Entrada: 634100

Saída: Numero de conta valido.

 

Entrada: 023699

Saída: Numero de conta invalido: O primeiro digito deve ser maior que zero.

 

Entrada: 989899

Saída: Numero de conta invalido: A soma dos dígitos e maior que 30.

 

O código feito por mim:
 

//Desafios JavaScript na DIO têm funções "gets" e "print" acessíveis globalmente:
//- "gets" : lê UMA linha com dado(s) de entrada (inputs) do usuário;
//- "print": imprime um texto de saída (output), pulando linha.

//Saiba mais sobre Expressões Regulares: 
//https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Regular_expressions

// O gets() receberá um número de conta como entrada:
const numeroConta = gets();

// Verifica se o número de conta consiste em exatamente 6 dígitos usando uma expressão regular:
if (/^\d{6}$/.test(numeroConta)) {
  const numArray = numeroConta.split('').map(Number);

  // Calcula a soma dos dígitos no número de conta
  const sum = numArray.reduce((a, b) => a + b, 0);

  // Verifica se o primeiro dígito é maior que zero e a soma dos dígitos é menor ou igual a 30
  if (numArray[0] > 0 && sum <= 30) {
    // Se a condição acima for verdadeira, imprime a mensagem de número de conta válido:
    print('Numero de conta valido.');
  } else {
    // Verifica se o numArray[0] referente ao primeiro dígito é igual a zero :
    if (numArray[0] === 0) {
      // Se o primeiro dígito for igual a zero, imprime a mensagem de número de conta inválido por causa do primeiro dígito:
      print('Numero de conta invalido: O primeiro digito deve ser maior que zero.');
    } else {
      // Caso contrário, imprime a mensagem de número de conta inválido devido à soma dos dígitos ser maior que 30:
      print('Numero de conta invalido: A soma dos digitos e maior que 30.');
    }
  }
} else {
  // Se o número de conta não tiver exatamente 6 dígitos, imprime uma mensagem de erro:
  print('Numero de conta invalido: Deve conter exatamente 6 digitos.');
}

 

Alguém sabe onde estou errando?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear Pelo que eu vi e testei... ele funciona bem.   mas só quando tirou a função gets()  e print();    

 

Pelo menos aqui, quando testei no navegador, o get() ele não reconheceu,  e o print ele estava abrindo o comando de imprimir página( testado no chrome)

 

 Veja seu código em funcionamento,  só acrescentei algumas partes para fins de funcionamento, como um campo para digitar, um botão para apertar, e transferi o código para dentro de uma função para ser acionada pelo botão... fora isso,  só foi alterado o get e o print.

 

https://jsfiddle.net/dife/95tv2zps/1/

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

17 minutos atrás, DiF disse:

@Air-Gear Pelo que eu vi e testei... ele funciona bem.   mas só quando tirou a função gets()  e print();    

 

Pelo menos aqui, quando testei no navegador, o get() ele não reconheceu,  e o print ele estava abrindo o comando de imprimir página( testado no chrome)

 

 Veja seu código em funcionamento,  só acrescentei algumas partes para fins de funcionamento, como um campo para digitar, um botão para apertar, e transferi o código para dentro de uma função para ser acionada pelo botão... fora isso,  só foi alterado o get e o print.

 

https://jsfiddle.net/dife/95tv2zps/1/

 

Obrigado pela ajuda!

 

Foi erro do site, agora funcionou!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!