Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

conclusão desafio 03 por @joseildoandrade12 em javascript #1163

Merged
merged 19 commits into from
Dec 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions desafio-03/joseildoandrade12/javascript/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
## Desafio 03: Números Palíndromos

Um palíndromo é uma palavra ou expressão que pode ser lida da esquerda para a direita ou da direita para a esquerda mantendo o mesmo significado. Um exemplo de palíndromo é a palavra “reviver”.

## Solução

Primeiro passo: puxar os valores que foram passados pelo usuário;

Segundo passo: definir uma variável com um valor vazio de array para colocar os números palindrômicos.

Terceiro passo: fazer uma validação em uma função para saber valores passados nos parâmetros estão de acordo com o necessário para saber se é um número palindromo, caso não seja retornará uma mensagem de qual erro o usuário cometeu.

Quarto passo: utilizar os valores que foram verificados em uma função com dois parâmetros min(valor mínimo) e max(valor máximo).

Quinto passo: criar um loop que caso min fosse menor ou igual a max, ocorresse uma validação.

Sexto passo: criar uma constante onde os valores que passaram na condição vão passar pelo método toString() tornando o Number numa string e logo em seguida com esse valor em String utilizando o método split('') que irá transformar a string numa array separando pelo valor que está sendo atribuito nos paresenteses, após isso utilizar o método de array reverse() para os valores que estão na array reverterem(quem está no inicio vai para o final e quem está no final vai para o inicio, e assim por diante), e depois utilizar o split('') que irá juntar os valores da array pela condição que está no método tornando essa junção em uma String novamente.

Sétimo passo: fazer uma validação com um if, se o valor min é igual ao valor que está na constante passada, ele vai adicionar o valor de min a váriavel que criou no inicio da solução pelo método de array variavel.push(valor).

## Teste e execução

Para testar a solução, é necessário ter o [Node.js](https://nodejs.org/) com a versão mais recente instalada em sua máquina.

É necessário ter o GIT em sua máquina [GIT](https://git-scm.com/downloads) com a versão mais recente.

Entre no Git e faça um clone do repositório para a sua máquina:

```bash
$ git clone https://github.com/joseildoandrade12/op-desafios.git
```

Após ter clonado, abra o terminal e digite o código para acessar a pasta que contém o arquivo :

```bash
cd desafio-03/joseildoandrade12/javascript
```

Depois disso, ainda no terminal digite o seguinte para inicializar o código:

```bash
node script.js
```

Quando você inicializar o código, vai aparecer a seguinte mensagem:

```bash
Informe o valor minimo:
```

Na primeira pergunta insira o valor mínimo, caso ele não tenha os requisitos necessários irá retornar uma mensagem mostrando seu erro.

Depois irá aparecer:

```bash
Informe o valor máximo:
```

Como no primeiro, insira o valor, caso esteja fora dos requisitos ele irá retornar uma mensagem de erro.

Após tudo isso ele retornará todos os números palíndromos no intervalo dos valores que o usuário escolheu.
63 changes: 63 additions & 0 deletions desafio-03/joseildoandrade12/javascript/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
function palindromos(min, max) {
const valueMin = min;
const valueMax = max;
const numerosPalidromos = [];
for (; min <= max; min++) {
const numInverso = +min.toString().split("").reverse().join("");
if (min === numInverso) {
numerosPalidromos.push(min);
}
}
console.log(
`os números palindromos entre ${valueMin} e ${valueMax} são : ${numerosPalidromos}`
);
return numerosPalidromos;
}

function verificacao(value) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O seu programa aborta se o usuário digita valor inadequado. Você precisa controlar o fluxo de execução do programa e repetir a pergunta até o dado ser o correto ou o usuário interromper o programa. Corrija por favor.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eu tenho que ficar mostrando as mensagens de erro até ele digitar o valor correto ou fechar o programa, certo?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@joseildoandrade12 não.
A ordem é:
Deu erro, exibe mensagem de erro e rejeita o valor e mostra a pergunta novamente.

Copy link
Contributor Author

@joseildoandrade12 joseildoandrade12 Dec 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahhh entendi, caso o usuário coloque o valor errado eu tenho que mostrar o erro e resetar a pergunta.

if (isNaN(value)) {
console.log("Digite apenas valores númericos");
return false;
} else if (value < 1) {
console.log("Digite apenas valores maiores que 0");
return false;
} else if (!Number.isInteger(value)) {
console.log("Digite apenas números inteiros");
return false;
} else {
return true;
}
}

const readline = require("node:readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});

function valorMin() {
rl.question("Informe o valor minimo: ", (min) => {
if (!verificacao(+min)) {
valorMin();
} else {
valorMax(min);
}
});
}

function valorMax(min) {
rl.question("Informe o valor máximo: ", (max) => {
if (!verificacao(+max)) {
valorMax(min);
} else if (min >= max) {
console.log(
"O valor mínimo não pode ser maior ou igual ao valor máximo"
);
valorMax(min);
} else {
palindromos(+min, +max);
rl.close();
}
});
}
valorMin();
Loading