Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos_Saturno

[Resolvido] Dificuldade com JS

Recommended Posts

Olá pessoal do iMasters.

 

Sou novo por aqui, esse é o meu primeiro tópico. Estou estudando sistemas para internet e estamos começando a ver mais profundamente javascript. Não tenho certeza se aqui é o lugar correto para postar este tipo de dúvida. Qualquer coisa me avisem ou podem mover o tópico, se necessário.

 

Estou resolvendo um exercicio proposto por um professor e não estou conseguindo perceber aonde está o erro, ou melhor: porque a variável "primo" não incrementa.

 

O enunciado é:

 

Escreva um programa que determine a quantidade de números primos entre 0 e um valor

informado pelo usuário. O valor informado necessariamente deve ser maior que zero

 

Quero ver se alguém pode me auxiliar, eis o código (eu coloquei para escrever o valor de algumas variáveis na tela para ver o comportamento delas durante o loop ):

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title> Construção de Páginas WEB II - exercicio2 </title>

<script language="javascript">

<!--

a = window.prompt("Informe um valor positivo: ");

a=parseInt( a );

var i;

i=parseInt( i );

i = a;

var b;

var primo=0;

primo=parseInt(primo);

b=parseInt( b );

 

while (i != 0){

 

b = a % i;

document.writeln( b ); //quero ver o resto para poder contar depois quantas vezes deveria incrementar a variavel primo

if (b != 0){

primo = primo++;

document.writeln(primo);

}

i--;

 

}

document.writeln("<h1>Exercicio 2 da lista de exercícios de Construção de Páginas WEB II</h1> <br /> ");

document.writeln("<h2>Aluno: Marcos Vinícius Saturno Ribeiro</h2><br /><br />");

document.writeln("<h2>A quantidade de numeros primos é :" + primo + "</h2><br />");

-->

</script>

</head>

<body>

</body>

</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi amigo.

 

Eu consegui resolver o exercício proposto, está ai o código e está comentado. :rolleyes:

 

Código Javascript

 

<script type="text/javascript">
// Identifica o elemento através do seu ID
function id( elemento )
{
   return document.getElementById( elemento );
}

window.onload = function()
{
   // Executa o evento submit do formulário
   id('form').onsubmit = function()
   {
       // Pega o número que o usuário digitou no campo e converte para Inteiro
       var numeroUsuario = parseInt( id('numeroUsuario').value );
       // Cria a variável numeroPrimo e atribui o valor 0 a ela.
       var numeroPrimo = 0;
       // Executa um looping de 0 até um número que o usuário digitar no campo
       for(var i = 0; i <= numeroUsuario-1; i++)
       {
           // Verifica se é primo ou não
           if(numeroUsuario % i == 1 || numeroUsuario % i == 0)
           { 
                  // Se for primo, incrementa +1 ao contador.
                  numeroPrimo++;
           } 
       }
       // Exibe o resultado final
       id('resultado').innerHTML = "Existem: " + numeroPrimo + " número(s) primo(s) entre 0 e " + numeroUsuario + ".";
       return false;
   }
}
</script>

 

Código HTML entre as tags <body> e </body>

 

<body>
   <form action="" id="form">
       <p>Digite um número: <input type="text" id="numeroUsuario"></p>
       <input type="submit" value="Calcular">
   </form>
    <span id="resultado"></span>
</body>

 

E o código completo:

 

<html>
   <head>
       <meta charset="utf-8">
<script type="text/javascript">
// Identifica o elemento através do seu ID
function id( elemento )
{
   return document.getElementById( elemento );
}

window.onload = function()
{
   // Executa o evento submit do formulário
   id('form').onsubmit = function()
   {
       // Pega o número que o usuário digitou no campo e converte para Inteiro
       var numeroUsuario = parseInt( id('numeroUsuario').value );
       // Cria a variável numeroPrimo e atribui o valor 0 a ela.
       var numeroPrimo = 0;
       // Executa um looping de 0 até um número que o usuário digitar no campo
       for(var i = 0; i <= numeroUsuario-1; i++)
       {
           // Verifica se é primo ou não
           if(numeroUsuario % i == 1 || numeroUsuario % i == 0)
           { 
                  // Se for primo, incrementa +1 ao contador.
                  numeroPrimo++;
           } 
       }
       // Exibe o resultado final
       id('resultado').innerHTML = "Existem: " + numeroPrimo + " número(s) primo(s) entre 0 e " + numeroUsuario + ".";
       return false;
   }
}
</script>
   </head>
<body>
    <form action="" id="form">
       <p>Digite um número: <input type="text" id="numeroUsuario"></p>
       <input type="submit" value="Calcular">
    </form>
    <!-- aparece mensagem -->
    <span id="resultado"></span>
</body>
</html>

 

E outra, estude viu ! u___________u. Nada de ficar pedindo que os outros faça seus exercicios rs

 

:upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela atenção Dii.

 

Na verdade eu queria entender porque a variável "primo" não estava incrementando. Não queria que alguém resolvesse.

 

Aliás, nenhum de nós dois acertou o exercício, porque ele pede a quantidade de números primos existente entre o número informado e zero. No seu código, se eu digitar "5", por exemplo, ele informará que existe 3 números primos e na verdade existem 4 (1,2,3 e o próprio 5).

 

Acho que teriamos que fazer um loop dentro do outro pra testar a variável sendo divida por ela mesmo e por uma variável que vai decrementando a cada loop, até descobrir a quantidade de divisores que não deixam resto. Se esse número de divisores for 2, o número será primo (divisível apenas por 1 e por ele mesmo) e isso incrementará a variável primo para dar o resultado correto final. ;)

 

Eis aqui o código pronto:

 

Se alguém puder, mude o título do tópico para [resolvido] ;)

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Construção de Páginas WEB II - exercicio2 </title>
<script language="javascript">
<!--
var divisor;
var primo=0;
valor = window.prompt("Informe um valor positivo: ");
valor = parseInt(valor);
while (valor <= 0){
alert("Esse número não vale para calcular... Tá me tirando rapá? Digite um número positivo!");
valor = window.prompt("Informe um valor inteiro e positivo: ");
valor = parseInt(valor);
}
divisor = parseInt(divisor);
var divisivel = 0;

divisor = valor;

document.writeln("<p>VALOR INFORMADO :" + valor + "</p>");
while (valor > 0){

	while (divisor > 0){
	if (valor % divisor == 0){
		divisivel = divisivel + 1;
		}
		divisor--;

		if (divisivel > 2) {
			divisor = 0;
			}

		if (divisor == 0){
				if (divisivel == 2){
			primo++;
			}
			divisivel = 0;
			}
	}
valor--;
divisor = valor;
}

document.writeln("<h1>Exercicio 2 da lista de exercícios de Construção de Páginas WEB II</h1> <br /> ");
document.writeln("<h2>Aluno: Marcos Vinícius Saturno Ribeiro</h2>");
document.writeln("<h3>Professor: Rodrigo Prestes Machado</h2>");

document.writeln("<h2>Enunciado: </h2> ");
document.writeln("<p>Escreva um programa que determine a quantidade de números primos entre 0 e um valor informado pelo usuário.<br /> O valor informado necessariamente deve ser maior que zero</p>");


document.writeln("<h2>A quantidade de numeros primos é :" + primo + "</h2><br />");
-->
</script>
</head>
<body>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.