Home › Fóruns › JavaScript › cálculo de número máximo
Marcado: javascript
- Este tópico contém 13 respostas, 4 vozes e foi atualizado pela última vez 4 anos, 1 mês atrás por
Tutora Mayla.
-
AutorPosts
-
-
12 de março de 2021 às 07:27 #62846
Heitor Gomes dos Santos
Participantecomo faço o cálculo de todos os números que compõe até chegar a ele? O número é o 3 : (1 + 2 + 3 = 6)
-
12 de março de 2021 às 15:09 #62894
IcaroFilho
ModeradorUma maneira simples e rápida (não que seja a certa) é através do laço de repetição.
vc cria uma variável acumuladora com valor 0. -> Ex.: somacria uma variável para o usuário dar a entrada do numero -> Ex.: num
cria um laço que com a condição de que seja verdadeiro enquanto num >= 0 e dentro do bloco ponha num -1 (que ele fara uma contagem regressiva, além de servir como o próprio contador) e a variável soma irá receber ela mesma e num.
fora do laço mande exibir a variável soma, que será o que deseja.
Espero ter ajudado -
12 de março de 2021 às 15:11 #62895
IcaroFilho
Moderadorsó uma correção
num = num -1 ou num -= 1 -
14 de março de 2021 às 21:40 #63056
Luiz Eduardo Araujo
ParticipanteCara quebrei cabeça aqui pra fazer kkk, mas acho que deu certo:
function sum(num){
var sumI = 0
var total = 0for (var i = 0; i < num; i++){
sumI += i
total = num + sumI
}return total
}console.log(sum(10))
-
14 de março de 2021 às 22:14 #63057
IcaroFilho
Moderadorvc testou e deu certo ?
não sou nenhum especialista em JS (muito tempo q n uso) mas observe os pontos q vou mencionar q serve ate para mim como duvida.
1-
for (var i = 0; i < num; i++){
Neste caso o num seria o numero inserido, correto ?
caso seja, ele nao será lido pois o programa correrá até 1 numero antes do num (se for 10, irá até 9)
no caso, se vc quer digitar por exemplo 4 e deseja o resultado 10
vc tem q usar “<=” ->for (var i = 0; i <= 4; i++ ){
2-
suml += i
este é o seu acumulador, ele te dará o resultado.
Não compreendi pq da variável total
total = num + sumI
pq seu ultimo loop será a soma do acumulador + o numero que vc digitou.
Ex¹.: se vc digitar 4
a soma 1 + 2 + 3 + 4 = 10, logo:
sum = 10
total = 14
Ex².: se digitar 10
sum = 55
total = 65OBS: n posso dizer q esta errado pois não sei exatamente o que planeja com aquele total.
na explicação que lhe dei eu usei um while com contador regressivo.
mas vc também fez verto usando for …
como vc vai ver… há diversas maneiras de se chegar a um objetivo. -
14 de março de 2021 às 22:30 #63058
Luiz Eduardo Araujo
ParticipanteNão entendi muito bem a dúvida mas vou tentar explicar a lógica:
a função é justamente pra receber o Num que será o valor passado no console.log(NomeDaFunção(NUM)), exemplo se eu fizer um console.log(sum(5)), ele fará o seguinte:
Minha posição que foi declarada como a variável I será percorrida até o valor 4 (< num). Todo o valor adquirido através desse contador ele somará no sumI, ou seja, 1+2+3+4 logo terá o valor 10 na variável sumI.
Após isso juntamos os valores na variável total que será = 5 (num) + 10 (sumI).
No final da função é dado o retorno do total que será igual 15.
—————————————————————————-Também consegui chegar a solução dessa forma:
function sum(number){
var total = 0for(var i = 1; i <= number; i++){
total += i;
}
return total;
}
console.log(sum(5)) -
14 de março de 2021 às 22:35 #63059
Luiz Eduardo Araujo
Participantesobre o <=, seria necessário apenas se o contador inicializasse a partir do número 1, já se inicializarmos do número 0 não tem problemas utilizarmos apenas o <
-
14 de março de 2021 às 22:38 #63060
Luiz Eduardo Araujo
ParticipanteJá se por acaso nós começarmos com o 0 no contador e passar o parâmetro do for de i <= num ai poderíamos realmente fazer da forma que você falou que ficaria assim:
function sum(num){
var total = 0
for (var i = 0; i <= num; i++){
total += i
}
return total
}console.log(sum(5))
-
14 de março de 2021 às 22:47 #63061
IcaroFilho
Moderadorshow, agora entendi o que vc fez =)
como eu fiz direto pelo jeito que postou no ultimo código, eu acabei ficando sem entender o seu código inicial.
e realmente a questão do “<=” não se encaixaria no seu quadro e por isso vc tinha feito com “<”
Obrigado pela explicação ! -
14 de março de 2021 às 22:48 #63062
Luiz Eduardo Araujo
ParticipanteNa real, pelo teste que fiz aqui no vscode, esse último e penúltimo que mandei tanto faz inicializar por 0 ou por 1 até porque se inicializar por 0 ele vai fazer total = total + i, e nesse caso ambos são zero então daria na mesma uheuehhue
-
14 de março de 2021 às 22:56 #63063
Luiz Eduardo Araujo
ParticipanteNo meu caso só não se encaixou por que a partir do laço com a posição 0 ele já usaria o valor passado no NUM pro total… por exemplo:
var sumI = 0
var total = 0for (var i = 0; i <= num; i++){
sumI += i
total = num + sumI
}Vamos supor que eu passe o valor 2 pro num, ele faria o seguinte:
0 é menor ou igual a 2? Sim, então sumI = 0 + 0, total = 2 + 0.
1 é menor ou igual a 2? Sim, então sumI = 0 + 1, total = 2 + 1.
2 é menor ou igual a 2? Sim, então sumI = 1 + 2, total = 2 + 3.Sendo assim mesmo percorrendo a posição 0 ele adicionou o valor de Num no total, o que não acontece na outra função:
var total = 0
for (var i = 0; i <= num; i++){
total += i
}Supondo de novo o valor 2 para o num:
0 é menor ou igual a 2? Sim, então total = 0 + 0, total = 0.
1 é menor ou igual a 2? Sim, então total = 0 + 1, total = 1.
2 é menor ou igual a 2? Sim, então total = 1 + 2, total = 3.—————————————————————————————–
Conclusão: Na função de cima ele só daria errado se eu usasse o <= começando pela posição 0 porque ele já sai desse ponto de partida com o valor de num adicionado no total. É mais ou menos isso ashusahu
-
14 de março de 2021 às 22:59 #63064
IcaroFilho
Moderadorsim, Eu só mencionei o “<=” pq eu estava simplificando utilizando apenas o acumulador dentro do laço.
-
14 de março de 2021 às 23:04 #63066
Luiz Eduardo Araujo
ParticipanteSimm show demais, eu apanhei pra fazer e consegui entender o que rolou por trás graças a pergunta porque fiquei testando e pesquisando ehueuhe, obrigado mano <3
-
15 de março de 2021 às 19:58 #63142
Tutora Mayla
MestreHeitor, os alunos Luiz e Icaro tiveram uma boa discussão aqui e conseguiram chegar em numa resposta muito boa para o seu problema. Se ainda houver alguma dúvida volte a entrar em contato para que possamos te ajudar.
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.