GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Preciso de ajuda uma função maisMenos que receba um array

Tags: #<Tag:0x00007f4c21e34b98>

Preciso de uma função maisMenos que receba um array e retorne outro com os seguintes três números:

  1. na primeira posição, a fração de números que são positivos
  2. na segunda posição, a fração de números que são zero
  3. na última posição, a fração de números que são negativos

Por exemplo, maisMenos([1, 2, 0, -1]) deveria retornar [0.5, 0.25, 0.25] , devido a que há 50% de positivos, 25% de zeros, e 25% de negativos.

Escreva a função maisMenos .

Algumas perguntas que poderiam ajudar: Como poderia passar um array e perguntar a cada elemento se é positivo, negativo ou zero? Como poderia contabilizar os elementos? Como construir o array resultante com estes valores?

É em Java ou JavaScript?

JavaScript

Uma forma de fazer, mas nada elegante é:

let retorno = [];
function maisMenos(arrayEntrada){
	let numeroPositivos = 0;
	let numeroZeros = 0;
	let numeroNegativos = 0;
	
	for(let i = 0; i < arrayEntrada.length; i++){
		if(arrayEntrada[i] < 0)
			numeroNegativos++;
			
		else if(arrayEntrada[i] == 0)
			numeroZeros++;
			
		else
			numeroPositivos++;
	}
	retorno[0] = numeroPositivos / arrayEntrada.length;
	retorno[1] = numeroZeros / arrayEntrada.length;
	retorno[2] = numeroNegativos / arrayEntrada.length;
	
	return retorno;
}

console.log(maisMenos([1, 2, 0, -1]));

Exemplo:

<!DOCTYPE html>
<html lang="pt-BR">
	<head>
		<meta charset="UTF-8">
		<title>Teste</title>
		
		<script>
			let retorno = [];
			function maisMenos(arrayEntrada){
				let numeroPositivos = 0;
				let numeroZeros = 0;
				let numeroNegativos = 0;
				
				for(let i = 0; i < arrayEntrada.length; i++){
					if(arrayEntrada[i] < 0)
						numeroNegativos++;
						
					else if(arrayEntrada[i] == 0)
						numeroZeros++;
						
					else
						numeroPositivos++;
				}
				retorno[0] = numeroPositivos / arrayEntrada.length;
				retorno[1] = numeroZeros / arrayEntrada.length;
				retorno[2] = numeroNegativos / arrayEntrada.length;
				
				return retorno;
			}
			
			console.log(maisMenos([1, 2, 0, -1]));
		</script>
	</head>
	<body>
	
	</body>
</html>

Rodando…

//