Ir ao conteúdo

Posts recomendados

Postado

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?

  • Moderador
Postado

@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
Postado
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

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