var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let linha;
let operacao;
let M = [];
let leituras = 0;
rl.question('Informe o número da linha: ', (linhaInput) => {
linha = parseInt(linhaInput);
rl.question('Informe o tipo de operação (S ou M): ', (operacaoInput) => {
operacao = operacaoInput;
console.log('Informe os elementos da matriz (um por um):');
rl.on('line', (linha) => {
const elementosLinha = linha.split(' ').map(parseFloat);
M.push(elementosLinha);
leituras++;
if (leituras === 12) {
rl.close();
calcularResultado();
}
});
});
});
function calcularResultado() {
const elementosLinha = M[linha];
const somaAreaVerde = elementosLinha.reduce((soma, elemento) => soma + elemento, 0);
if (operacao === 'M') {
const media = somaAreaVerde / 12;
console.log(media.toFixed(1));
} else {
console.log(somaAreaVerde.toFixed(1));
}
}
Não sei o por que não está dando certo! Grata
- BBrenda Aniceto Bueno @Brenda
O código que você forneceu parece estar próximo de funcionar, mas tem um problema de lógica. O erro está na maneira como a matriz está sendo preenchida. O código atual está tentando ler as entradas da matriz por meio do evento rl.on('line', ...), mas esse evento é acionado sempre que há uma nova linha de entrada, o que não está alinhado com o formato de entrada que você descreveu. O beecrowd é bem chatinho em relação as entradas, uma dica seria você ler todas as entradas de uma vez, incluindo a linha, a operação e todos os elementos da matriz, e então processa esses valores.
Segue um exemplo:
var input = require('fs').readFileSync('/dev/stdin', 'utf8'); var lines = input.split('\n'); var linha = parseInt(lines.shift()); var operacao = lines.shift().trim(); var matriz = []; var soma = 0; var elementos = 0; for(var i = 0; i < 12; i++){ matriz.push([]); for(var j = 0; j <12; j++){ matriz[i][j] = parseInt(lines.shift()); if(i === linha){ soma += matriz[i][j]; elementos++; } } } if(operacao === 'M'){ soma /= elementos; } console.log(soma.toFixed(1));Para problemas do Beecrowd, onde o formato de entrada é bem definido e não interativo, é melhor ler todas as entradas de uma vez e então processar esses valores. Isso garante que os dados sejam lidos de acordo com o formato esperado. Estou à disposição caso tenha alguma dúvida" 😊
Denise Schirmer @deniseschirmerMuito obrigada Brenda, me ajudou muitooo!
- Em resposta aBrenda⬆:
alzira eva cavalcanti alves @evaMuito bom, estava sem conseguir resolver essa questão, ajudou muito, só mudaria ali para:
matriz[i][j] = parseFloat(lines.shift())por favor me corrija se tiver errada.
Natália Stoll Nogueira @nataliastollPerfeito! Estava empacada. Assim fica mais fácil de entender. Obrigada
- Em resposta aBrenda⬆:Rrenato marcelo @RenatoCelo
Solução Eficiente! Parabéns.
- Em resposta aBrenda⬆:VMatheus Vieira @VieiraTabareu
Não é dev, é santa.
Fritei a mente nessa questao. Misericordia.
Em resposta adeniseschirmer⬆:alzira eva cavalcanti alves @evaObrigada meninas pela pergunta e resposta, já estava a ponto de abrir uma pergunta quando vi que já tinha uma registrada, ajudou muito.
- TEm resposta adeniseschirmer⬆:Tom Silva @TomSilva
ótima solução, ajudou bastante.