Desafio - Produto e divisão - 6-7 - Solução de Problemas com JavaScript

 

//### Desafio - Produto e divisão
Você tem a obrigação de testar as calculadores, para que façam apenas operações de multiplicação e divisão.
Além disso, o termo a ser digitado em cada operação, (o número exibido no visor que será dividido ou multiplicado), só pode conter um
único dígito.
Quando ligada, a calculadora exibe o número 1. Após isso, o usuário pode digitar um número com um único dígito e escolher se esse número
deve multiplicar ou dividir o número exibido anteriormente; o resultado da operação escolhida é então exibido na calculadora.
Pode-se repetir esse processo quantas vezes quiser.
Apesar de ser permitido apenas números inteiros de um dígito, a calculadora permite exibir números com múltiplos dígitos e até mesmo números
fracionários.
Apresentada a sequência de operações realizadas logo depois de ligada, seu objetivo é conferir o resultado exibido.
No primeiro caso de teste abaixo, o usuário deseja calcular o resultado da seguinte expressão: 1 × 2 × 1 × 3. Note que a primeira ocorrência do número 1 vem do fato da calculadora mostrar inicialmente 1 ao invés de 0.
No segundo caso de teste abaixo, o usuário deseja calcular o resultado da seguinte expressão: ((1/2)/3) × 6.

//### Entrada
A primeira e única linha da entrada contém um inteiro N (1 ≤ N ≤ 100 000). Cada uma das próximas N linhas contém um dígito e um caractere '*'
ou '/', que representam uma operação realizada na calculadora.

//### Saída
O programa deve imprimir uma única linha contendo o resultado que deve ser exibido pela calculadora ao final de todas as operações.

|---------------------------------------|
| Exemplo de Entrada | Exemplo de Saída |
|--------------------|------------------|
| 3 | 6 |
| 2 * | |
| 1 * | |
| 3 * | |
|--------------------|------------------|
| 3 | 1 |
| 2 / | |
| 3 / | |
| 6 * | |
|--------------------|------------------|
| 11 | 387420489 |
| 9 * | |
| 9 * | |
| 9 * | |
| 9 * | |
| 9 * | |
| 9 * | |
| 9 * | |
| 9 * | |
| 9 * | |
| 9 * | |
| 9 / | |
|---------------------------------------|
*/

//Código do desafio:
const inputs = [ //para uso local
'3',
'2 *',
'1 *',
'3 *',
'3',
'2 /',
'3 /',
'6 *',
'11',
'9 *',
'9 *',
'9 *',
'9 *',
'9 *',
'9 *',
'9 *',
'9 *',
'9 *',
'9 *',
'9 /',
] //para uso local
let i = 0 //para uso local

let input, number1, number2, operator, result;
const regexInput = /^([0-9]) *([*/])/

const doMath = {
'/': (a, b) => {
a = Number(a)
b = Number(b)
return parseFloat(a / b)
},
'*': (a, b) => {
if (Number(a) * Number(b) >= Number.MAX_SAFE_INTEGER) {
a = BigInt(a)
b = BigInt(b)
return a * b
}
return a * b
}
}

while (true) {
number1 = 1
number2 = undefined
result = undefined
input = undefined
operator = undefined
// nOperators = parseInt(gets()) //para uso na DIO
nOperators = parseInt(inputs[i++]) //para uso local

if (!nOperators || nOperators === '' || nOperators < 1 || nOperators > 100000) break;

for (let index = 0; index < nOperators; index++) {
// input = gets(); //para uso na DIO
input = inputs[i++]; //para uso local

if (!input.match(regexInput)) continue;

[str, number2, operator] = input.match(regexInput);

if (number2 === undefined || (number2 == 0 && operator === '/')) continue;
result = doMath[operator](number1, number2)

number1 = result
}

if (result === undefined) { console.log(number1); continue; }
console.log(typeof result == 'bigint' ? result.toString() : parseInt(result))
}
/*

faço trabalhos avulsos de programação em php , javascript , html , VBA-EXCEL e EXCEL formulas avançadas . pode entrar em contato no whatsapp 83988596239. nós combinaremos os valores de acordo com a demanda.

Nenhum comentário:

Postar um comentário

Programando com JS 2 / 5 - Resto 2

  Desafio Leia um valor inteiro N . Apresente todos os números entre 1 e 10000 que divididos por N dão resto igual a 2. Entrada A ...